for await...of는 다음 값을 요청하고 준비될 때까지 기다린다

비동기 반복은 여러 Promise를 한꺼번에 던지는 것이 아니라 생산 속도와 소비 속도를 맞춰 순차 처리한다.

01next 요청

for await가 iterator.next를 순서대로 호출한다.

02pending 대기

Promise가 해결될 때까지 루프 본문이 멈춘다.

03yield value

준비된 값을 하나씩 처리한다.

04done true

더 이상 값이 없으면 반복을 종료한다.

구분의미판단
생산자async function*늦게 도착하는 값을 yield
소비자for await...of순서를 보존하며 처리
정리return/throw/finally중간 실패와 자원 해제를 표현

핵심 for await...of는 병렬 처리 문법이 아니라 비동기 iterable의 값을 하나씩 기다리며 소비하는 계약이다.