'How to timeout asyncio.to_thread?

I experimenting with the new asyncio features in Python 3.9, and have the following code:

import asyncio

async def inc(start):
    i = start
    while True:
        print(i)
        i += 2
    return None

async def main():
    x = asyncio.gather(
        asyncio.to_thread(inc, 0),
        asyncio.to_thread(inc, 1)
    )
    try:
        await asyncio.wait_for(x, timeout=5.0)
    except asyncio.TimeoutError:
        print("timeout!")

asyncio.run(main())

My expectation is that the program will print numbers starting from 0 and terminate after 5 seconds. However, when I execute the program here, I see no output and the following warning:

/usr/lib/python3.9/asyncio/events.py:80: RuntimeWarning: coroutine 'inc' was never awaited
  self._context.run(self._callback, *self._args)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
/usr/lib/python3.9/concurrent/futures/thread.py:85: RuntimeWarning: coroutine 'inc' was never awaited
  del work_item
RuntimeWarning: Enable tracemalloc to get the object allocation traceback


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source