HardEvent Loop & Promises💻 Output Question

Multiple awaits — each is a microtask suspension

💡

Hint

Each await is a suspension point. Code between awaits runs as separate microtasks.

What does this output?

async function run() {
  console.log('A');
  await null;
  console.log('B');
  await null;
  console.log('C');
}
run();
console.log('D');

Correct Output

A
D
B
C

Why this output?

Explanation: A logs sync. First await suspends. D logs sync. Microtask resumes: B. Second await suspends. Microtask resumes: C.

Key Insight: Each await is a suspension point. Code between awaits runs as separate microtasks.

More Event Loop & Promises Output Questions

EasySynchronous code runs before setTimeoutMediumPromise microtask before setTimeout macrotaskMediumPromise chain passes valuesHardTwo Promise chains interleave in microtask queue

Practice predicting output live →

66 output questions with instant feedback

💻 Try Output Quiz