Ответ на викторину

Что выведет этот код?
async function test() {
console.log(1);
setTimeout(() => console.log(2), 0);
await Promise.resolve();
console.log(3);
}
test();
console.log(4);

Правильный ответ: 1 4 3 2

Где ломаются:
await не «останавливает мир», он отдаёт управление event loop
Promise.resolve() уходит в microtask queue
setTimeout — это macrotask, он выполнится позже

Разбор по шагам (для поста-ответа):
1 — синхронно
setTimeout планируется
await отдаёт управление
4 — синхронный код вне функции
3 — microtask после await
2 — macrotask из setTimeout