비동기 반복 계약

for await...of는 종료 계약까지 설계한다

값의 타입만 맞아도 생산자 정리, 소비자 중단, 오류 전파가 빠지면 스트림 코드는 오래 버티기 어렵습니다.

producer

생산자는 다음 값을 약속

next()가 Promise로 IteratorResult를 돌려주고, 완료 시 done을 명확히 보냅니다.

AsyncIterator<T>
consumer

소비자는 순서대로 대기

루프 본문은 각 값을 처리한 뒤 다음 요청으로 넘어가므로 backpressure가 자연스럽습니다.

for await...of
cleanup

중단 시 정리를 보장

break, throw, 연결 종료 같은 상황에서 파일 핸들러나 구독을 닫아야 합니다.

return 또는 finally
리뷰 질문

루프가 일찍 끝나도 생산자가 멈추고, 오류가 호출자에게 전달되며, 값 타입이 좁혀지는지 확인합니다.