Obtengo UnhandledPromiseRejection cuando ejecuto el siguiente código en node.js v17.1.0. La promesa "esperada" de rechazo después de 100 ms no se detecta ni por el "trycatch" circundante dentro de la función asíncrona ni por el método "entonces" en la promesa devuelta.
¿Por qué tal comportamiento? ¿Alguna explicación proveniente de la especificación?
const asyncFunc = async () => { const resolveAfter2000ms = new Promise((resolve) => { setTimeout(resolve, 2000); }); const rejectAfter100ms = new Promise((_, reject) => { setTimeout(reject, 100); }); try { await resolveAfter2000ms; await rejectAfter100ms; } catch (error) { console.log('error catched inside async'); } }; asyncFunc().catch(() => console.log('error catched outside async'));