Awaiting data availability
asyncio's future objects look and behave pretty much like concurrent.futures
future objects, but they're not interchangeable. They have subtle differences in behavior and, of course, major differences in how they interact with the underlying systems, which are completely different. Still, each future is a way of referencing the value that may or may not have been computed yet and, if necessary, a way of waiting for that value to become available.
asyncio's future objects
The most commonly used feature of a future object is to wait for its value to be determined and then retrieve it. For asyncio's future objects, this is done by simply waiting for the future, as shown in the following code example:

This will tell the scheduler to pause the coroutine until the value of the future becomes available, after which the future's value is set in the coroutine as the result of the await
expression.
If the future represents a raised exception, instead of a value, that exception...