python uses aio.ensure_future
aio.Task is a Future and it wraps a coroutine aio.ensure_future(coro) wraps a coroutine in a Task/Future and returns it
aio.ensure_future and loop.create_task are almost the same, you should use aio.ensure_future
aio.gather wait and gathers the results aio.wait wait for the coroutines to finish. 1. you have to mannually collect them, 2. you can specify the behavior, not wait for all
promise and future both represent a object that it's return value will be set in the future.
# Python Future.set_result