Allow marking of errors as handled for Bluebird

Set .handledRejection on an Error object to tell Bluebird that it's been
handled and shouldn't be logged by onPossiblyUnhandledRejection().
This commit is contained in:
Dan Stillman 2016-04-27 02:32:58 -04:00
parent 1502985d98
commit 05de47149f
3 changed files with 10 additions and 8 deletions

View File

@ -96,13 +96,10 @@
});
// TEMP: Only turn on if debug logging enabled?
Promise.onPossiblyUnhandledRejection(function (e, promise) {
if (e.name == 'ZoteroPromiseInterrupt') {
if (e.name == 'ZoteroPromiseInterrupt' || e.handledRejection) {
return;
}
// Ignore some errors during tests
if (e.message && e.message.indexOf(' -- ignore') != -1) return;
self.debug('Possibly unhandled rejection:\n\n' + e.message);
throw e;
});

View File

@ -246,6 +246,7 @@ ConcurrentCaller.prototype._processNext = function () {
this._processNext();
});
e.handledRejection = true;
f.deferred.reject(e);
});
return true;

View File

@ -206,8 +206,10 @@ describe("ConcurrentCaller", function () {
Zotero.debug("Throwing " + id);
// This causes an erroneous "possibly unhandled rejection" message in
// Bluebird 2.10.2 that I can't seem to get rid of (and the rejection
// is later handled), so pass " -- ignore" to tell Bluebird to ignore it
throw new Error("Fail -- ignore");
// is later handled), so tell Bluebird to ignore it
let e = new Error("Fail");
e.handledRejection = true;
throw e;
}
if (running > numConcurrent) {
failed = true;
@ -279,8 +281,10 @@ describe("ConcurrentCaller", function () {
Zotero.debug("Throwing " + id);
// This causes an erroneous "possibly unhandled rejection" message in
// Bluebird 2.10.2 that I can't seem to get rid of (and the rejection
// is later handled), so pass " -- ignore" to tell Bluebird to ignore it
throw new Error("Fail -- ignore");
// is later handled), so tell Bluebird to ignore it
let e = new Error("Fail");
e.handledRejection = true;
throw e;
}
if (running > numConcurrent) {
failed = true;