Поэтому я подумал, что могу использовать Promise.method()
из bluebird для замены библиотеки trycatch, которую я использовал.
К сожалению, кажется, что он не улавливает выброшенную ошибку из setTimeout.
у меня что-то в этом духе
function run()
{
var p = Promise.pending()
var inner = Promise.method(function()
{
//some code that could potentially get stuck
setTimeout(function $timeoutTaskKill() {
if (p.promise.isPending())
{
var duration = moment.duration(taskTimeout).seconds();
throw new Error(util.format('timeout has been reached: %ss', duration));
}
}, taskTimeout)
});
//pseudo
inner().then(p.reject, p.resolve);
return p.promise;
}
Это крашит мой процесс. Когда я использовал библиотеку trycatch вместо Promise.method
, она поймала ошибку.
.then(success,fail)
, а также отложенный антишаблон. - person Benjamin Gruenbaum   schedule 04.11.2014