asyncio.wait_for has some significant race/leak risk before cpython 3.12
see https://github.com/python/cpython/pull/98518