puzzle 04 · javascript

In what order do these log?

console.log("A");
setTimeout(() => console.log("B"), 0);
Promise.resolve().then(() => console.log("C"));
console.log("D");
A B C D
A D C B
A D B C
A C D B

why

Synchronous code runs first (A, D). Then the microtask queue drains before any macrotask, so the resolved promise callback (C) beats the setTimeout (B) even at 0ms.

Today's puzzlea new one every day, and a streak to keep