from asyncio import sleep, wait_for, shield, get_event_loop import concurrent import sys print(sys.version) async def asynciter(): await sleep(1) print('yielding 1') yield 1 yield 2 yield 3 yield 4 async def runtest(): aiter = asynciter() cachen = aiter.__anext__() try: await wait_for(shield(cachen), .01) except concurrent.futures._base.TimeoutError: print('timed out') pass print('results: %s' % repr(await cachen)) print('getting 2: %s' % repr(await aiter.__anext__())) loop = get_event_loop() loop.run_until_complete(runtest())