Server-side async/await with coroutines

I don’t think you really need your async helper to pass an appropriate coroutine context. Instead, you should try to avoid using async in your code as much as possible (ideally, not at all). You should focus on trying to represent your needs with suspend functions. You should just launch a new coroutine on each request and that is going to be only place in your code where you’d explicitly specify coroutine context. Then the actual business-logic that handles the request would be written in such a way that all the functions that perform any kind of asynchronous activity and/or need to wait for anything are marked with suspend.

I’d suggest to check out “Introduction to Coroutines” presentation from KotlinConf for an overview of all the coroutine-related concepts and how they are different from traditional async/await model that you’d find in Hack and elsewhere: KotlinConf 2017 - Introduction to Coroutines by Roman Elizarov - YouTube