1 + 1 = 2 пробрасывается до throw x, который кидает 2. Первый .then(x => console.log(x)) пропускается, .catch ловит и печатает 2. catch возвращает undefined, дальше Promise.resolve(undefined), второй catch пропускается, финальный .then печатает undefined.
Задача #2
Что будет в консоли и почему?
async function test() { console.log(1); await Promise.resolve(); console.log(2);}console.log(3);test();console.log(4);
Ответ
3, 1, 4, 2
Синхронно: 3, затем вызов test() печатает 1 до await. await ставит остаток функции в микрозадачу, управление возвращается — печатается 4. После синхронного кода выполняется микрозадача — 2.