Promise는 비동기 결과의 상태를 한 번만 확정한다

async·await도 같은 Promise 흐름을 순서대로 읽기 좋게 표현할 뿐 실행 모델은 같다.

호출

Promise 생성

작업을 시작하고 pending 객체를 즉시 반환

대기

await

함수 실행을 양보하고 다음 코드는 continuation으로 예약

확정

fulfilled / rejected

결과 또는 오류 중 하나로 한 번만 전이

재개

microtask

현재 call stack 뒤에 후속 코드를 실행

핵심await는 스레드를 막지 않는다. Promise가 확정될 때까지 해당 async 함수의 나머지만 미룬다.