asyncio.shield(aw) -> Result § await asyncio.wait_for(aw, timeout) -> Result § await asyncio.wait(aws, *, timeout=None, return_when=ALL_COMPLETED) -> Set[Task | Future], Set[Task | Future] · FIRST_COMPLETED / FIRST_EXCEPTION § asyncio.as_completed(aws, timeout=None) -> Iterable[Future] § asyncio.{Lock, Event, Condition, Semaphore, BoundedSemaphore} Structured Concurrency in asyncio Happy Eyeballs를 이걸로 구현하지 않은 이유 : 1) 각 task 시작 시간을 원하는 간격으로 설정할 수 없고 2) task 실패 시 다음 task를 동적으로 추가할 수 없기 때문