--- /dev/null
+'use strict';
+var util = require('util');
+var onExit = require('signal-exit');
+var currentlyUnhandled = require('currently-unhandled');
+
+var installed = false;
+
+module.exports = function (log) {
+ if (installed) {
+ return;
+ }
+
+ installed = true;
+
+ log = log || console.error;
+
+ var listUnhandled = currentlyUnhandled();
+
+ onExit(function () {
+ var unhandledRejections = listUnhandled();
+
+ if (unhandledRejections.length > 0) {
+ unhandledRejections.forEach(function (x) {
+ var err = x.reason;
+
+ if (!(err instanceof Error)) {
+ err = new Error('Promise rejected with value: ' + util.inspect(err));
+ }
+
+ log(err.stack);
+ });
+
+ process.exitCode = 1;
+ }
+ });
+};