PEP 0492 adds new __await__ magic method. Object that implements this method becomes future-like object and can be awaited using await. It
__await__
await
Use a decorator.
def chain__await__(f): return lambda *args, **kwargs: f(*args, **kwargs).__await__()
Then write __await__ as a native coroutine.
async def new_sleep(): await asyncio.sleep(2) class Waiting: @chain__await__ async def __await__(self): return await new_sleep()