function errorPromise() { return new Promise((_resolve, _reject) => { console.log('error coming up'); throw new Error('oops'); }); } function okPromise() { return new Promise((_resolve, _reject) => { console.log('ok'); // _resolve('ok'); setTimeout(() => _resolve('ok'), 0); }); } async function cannotCatchError() { try { const p = okPromise(); const p2 = errorPromise(); // await Promise.all([p, p2]); await p; await p2; } catch (e) { console.log('caught', e); } console.log('done'); } cannotCatchError();