How to name the return of `__await__` method?

I know it’s a dumb question, but I can’t find a suitable name for the result of an __await__ call. For the context, I’m working on PyO3 async support, and I have to name a struct which wraps this object.

I didn’t find any proper naming in the documentation. Data model and PEP 492 only write about it as “the iterator returned by __await__”.

Naming my struct with something like PyAwaitIterator would be quite confusing, because it is not meant to be iterated, but to be awaited. PyCoroutine would be better understandable, but not really exact, because this object may not be a coroutine (it is only the case when returned by coroutine __await__).

Would anyone have a better name?

It seems that there is no better name than “a thing returned by __await__”. It should implement the iterator protocol, but it can also optionally implement some generator methods as well. If your object implement them all, it is not only an iterator, but a generator. But iterator and generator are just protocols, what actually your object does when implementing them? It can be a “proxy”, a “mediator”, a “manager”, a “controller”, a “handler”, an “implementation”.

Thank you a lot for your answer. Actually, my object doesn’t implement any Python protocols, it’s just a newtype wrapper to implement the Rust future protocol (but I can’t name it PyFuture because it’s already taken for the asyncio.Future wrapper. Thanks to your suggestion, I almost went for something like PyAwaitHandler, but I finally gave up and replaced my type by a simple async function; it turns to be better after all.