Symbol.asyncIterator 또는 sync iterable
for await...of는 next Promise와 소비 본문을 순차 연결한다
한 iteration의 next()와 본문 처리가 끝난 뒤 다음 값을 요청한다. 이 pull 순서는 임의의 push 소스 버퍼까지 자동 제어하지는 않는다.
next()Promise<IteratorResult<T>>done:false면 value 바인딩
본문 await 뒤 다음 next 호출
done:true 또는 return()
AsyncIterable<T>가 next 결과를 검사한다.
Promise·Symbol.asyncIterator가 필요하다.
중단 시 return() Promise를 기다리며 자원 해제는 구현이 맡는다.
병렬성이 필요하면 제한된 동시성 정책을 별도로 둔다.
generator finally나 custom return에서 close한다.
소스 next rejection과 소비 본문 오류를 관측 지점에서 분리한다.
검증 기준: 정상·break·throw·abort 경로에서 iterator return/finally와 원본 stream·cursor 해제를 시험한다.