비동기 반복 가능 객체
`Symbol.asyncIterator`를 제공하는 객체
파일 스트림, 웹소켓 메시지, DB 커서처럼 시간이 지나며 도착하는 값을 동기 반복문처럼 읽게 해준다.
`Symbol.asyncIterator`를 제공하는 객체
`next()`가 Promise를 반환
Promise가 `{value, done}`으로 풀릴 때까지 대기
값을 처리하고 done이 true면 종료
핵심비동기 이터레이터와 for await of은 각 요소의 관계와 선택 조건을 함께 읽어야 한다.