when_any should also specify the generic type for the tasks similar to when_all
def when_all(tasks: list[Task[T]]) -> WhenAllTask[T]:
"""Returns a task that completes when all of the provided tasks complete or when one of the tasks fail."""
return WhenAllTask(tasks)
def when_any(tasks: list[Task]) -> WhenAnyTask:
"""Returns a task that completes when any of the provided tasks complete or fail."""
return WhenAnyTask(tasks)