The documentation at https://docs.python.org/3/library/asyncio-eventloop.html?highlight=run_in_executor#asyncio.AbstractEventLoop.run_in_executor says that this is a coroutine, but asyncio's concrete event loop implementation actually has them as functions that return Futures directly. It shouldn't matter to people calling those methods, so I'm going to keep the `@coroutine` decorator on them and change the return type to Generator to be consistent with the documentation for AbstractEventLoop.