Erolast, что-то это похоже разные вещи:
var domain = require('domain');
domain.create().on('error', function(err) {
console.log('caught');
}).run(function() {
throw new Error; // это ловим
setTimeout(function() {
throw new Error; // и это ловим
});
})
require('babel/register');
var co = require('co');
co(function* () {
try {
var result = yield new Promise((resolve, reject) => {
throw new Error; // это ловим
setTimeout(() => {
throw new Error; // это нет
});
});
return result;
} catch(e) {
console.log('caught');
}
});
Домены предназначены для того, чтобы ловить исключения в асинхронных вызовах, для ошибок, не учтенных разработчиком. co + геренаторы, чтобы преобразовывать reject'ы в исключения и только на
текущем уровне. Кроме того, использовать генераторы, чтобы ловить исключения... очередной костыль, не?