asyncio.TaskGroup from stdlib provides structured concurrency
Since 3.11 it seems; I'm currently stuck on 3.8, but hopefully we should be able to upgrade soon. Thanks.