var Promise = require('rsvp').Promise; function MyCoolErr() {} function foo() { return new Promise(function(resolve, reject) { console.log("We're running..."); // Resolve and all is good ... resolve(); }); } foo() .then(function() { console.log("We're still running..."); // But then we go and throw ANY exception in here // and the error is silently swallowed. throw 'any runtime err, incl. typos, invalid code etc.' console.log("We won't get here."); }) .catch(function(err) { if (err instanceof MyCoolErr) { console.log('I know this error so will handle here'); return; } console.log('I did not recognise the error ...'); // And I re-threw it. I expect this to be an 'unhandled exception' and reach my devtools. // // ... But nope, I'll never know this happened :( throw err; });