for await...of는 next Promise와 소비 본문을 순차 연결한다

한 iteration의 next()와 본문 처리가 끝난 뒤 다음 값을 요청한다. 이 pull 순서는 임의의 push 소스 버퍼까지 자동 제어하지는 않는다.

01 · GETiterator 획득

Symbol.asyncIterator 또는 sync iterable

02 · NEXTnext()Promise<IteratorResult<T>>
03 · AWAIT결과 대기

done:false면 value 바인딩

04 · BODY본문 처리

본문 await 뒤 다음 next 호출

05 · CLOSE종료·중단

done:true 또는 return()

타입 계약

AsyncIterable<T>가 next 결과를 검사한다.

런타임 계약

Promise·Symbol.asyncIterator가 필요하다.

정리 계약

중단 시 return() Promise를 기다리며 자원 해제는 구현이 맡는다.

PACE처리가 직렬

병렬성이 필요하면 제한된 동시성 정책을 별도로 둔다.

CLEANUP자원이 남음

generator finally나 custom return에서 close한다.

ERRORreject·throw 혼재

소스 next rejection과 소비 본문 오류를 관측 지점에서 분리한다.

검증 기준: 정상·break·throw·abort 경로에서 iterator return/finally와 원본 stream·cursor 해제를 시험한다.