Asyncio: how is a coroutine executed?