Cuando llama a un throw desde el nodo de función asíncrona, dice un error:
Rechazo de promesa no controlado. Este error se originó al lanzar dentro de una función
asyncsin un bloquecatcho al rechazar una promesa que no se manejó con.catch().
Pero tengo un .catch() definido en la llamada:
class Cls { async fn(){ throw new Error('err'); return 'test'; } } cls = new Cls(); cls.fn() .then(data => console.log(data)) .catch(e => { throw e })¿Cuál es el problema?
La captura aquí
cls.fn() .then(data => console.log(data)) .catch(e => { throw e })en realidad está detectando un error arrojado dentro del método fn:
throw new Error('err');Sin embargo, después de atraparlo, genera explícitamente otro error
.catch(e => { throw e });Y ahora no hay nadie para capturar este nuevo error que arrojas, por lo que tu programa falla.