Hint
A setTimeout inside a setTimeout callback schedules a new macrotask — runs in a future event loop iteration.
setTimeout(() => {
console.log('outer');
setTimeout(() => console.log('inner'), 0);
}, 0);
console.log('sync');sync outer inner
Explanation: sync runs first. outer fires in macrotask 1. Inside it, inner is registered as a new macrotask. inner runs in macrotask 2.
Key Insight: A setTimeout inside a setTimeout callback schedules a new macrotask — runs in a future event loop iteration.