Manejo de excepciones, errores lanzados, dentro de las promesas.

Estoy ejecutando código externo como una extensión de terceros para un servicio de node.js. Los métodos API devuelven promesas. Una promesa resuelta significa que la acción se llevó a cabo con éxito, una promesa fallida significa que hubo algún problema para llevar a cabo la operación.

Ahora aquí es donde estoy teniendo problemas.

Dado que el código de terceros es desconocido, podría haber errores, errores de sintaxis, problemas de tipo, cualquier cantidad de cosas que podrían hacer que node.js produzca una excepción.

Sin embargo, dado que todo el código está envuelto en promesas, estas excepciones lanzadas están regresando como promesas fallidas.

Intenté colocar la llamada de función dentro de un bloque try / catch, pero nunca se activó:

// worker process
var mod = require('./3rdparty/module.js');
try {
  mod.run().then(function (data) {
    sendToClient(true, data);
  }, function (err) {
    sendToClient(false, err);
  });
} catch (e) {
  // unrecoverable error inside of module
  // ... send signal to restart this worker process ...
});

En el ejemplo anterior de código de psuedo, cuando se produce un error, aparece la función de promesa fallida y no la captura.

Por lo que leí, esta es una característica, no un problema, con promesas. Sin embargo, estoy teniendo problemas para entender por qué siempre querría tratar las excepciones y los rechazos esperados de la misma manera.

Un caso es sobre errores reales en el código, posiblemente irrecuperables: el otro es simplemente la información de configuración que falta, o un parámetro, o algo recuperable.

¡Gracias por cualquier ayuda!

Respuestas a la pregunta(3)

Su respuesta a la pregunta