Вопрос проверяет понимание приоритета microtasks над macrotasks.
Короткий ответ
Promise.then всегда выполняется раньше, чем setTimeout, даже если таймер имеет задержку 0. Это происходит потому, что then попадает в очередь microtasks, а setTimeout — в очередь macrotasks. После завершения синхронного кода event loop сначала очищает очередь microtasks, и только потом берёт следующую macrotask.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.