<p dir="ltr">On May 5, 2015 2:14 PM, "Guido van Rossum" <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br>
><br>
> In the PEP 492 world, these concepts map as follows:<br>
><br>
> - Future translates to "something with an __await__ method" (and asyncio Futures are trivially made compliant by defining Future.__await__ as an alias for Future.__iter__);<br>
><br>
> - "asyncio coroutine" maps to "PEP 492 coroutine object" (either defined with `async def` or a generator decorated with @types.coroutine -- note that @asyncio.coroutine incorporates the latter);<br>
><br>
> - "either of the above" maps to "awaitable".</p>
<p dir="ltr">Err, aren't the first and third definitions above identical?</p>
<p dir="ltr">Surely we want to say: an async def function is a convenient shorthand for creating a custom awaitable (exactly like how generators are a convenient shorthand for creating custom iterators), and a Future is-an awaitable that also adds some extra methods.</p>
<p dir="ltr">-n</p>