async() is another coroutine builder. It works a lot like launch(), except that it returns a Deferred object. You can call await() on the Deferred to block for the coroutine to complete and to get whatever value is returned by the lambda expression that you passed to async().

You can learn more about this in:
Run Edit