Guido van Rossum wrote:
the bytecode generated for await treats coroutine objects special, just like the bytecode generated for yield-from treats generator objects special. The special behavior they have in common is the presence of send() and throw() methods,
I don't think that's quit accurate. Yield-from treats any object having send() and throw() methods the same way it treats a generator -- there's nothing special about the generator *type*. Presumably 'await' is the same.