1234567891011121314151617181920212223242526272829303132333435363738 |
- 'use strict';
- const util = require('util');
- const onExit = require('signal-exit');
- const currentlyUnhandled = require('currently-unhandled');
-
- let installed = false;
-
- const loudRejection = (log = console.error) => {
- if (installed) {
- return;
- }
-
- installed = true;
-
- const listUnhandled = currentlyUnhandled();
-
- onExit(() => {
- const unhandledRejections = listUnhandled();
-
- if (unhandledRejections.length > 0) {
- for (const unhandledRejection of unhandledRejections) {
- let error = unhandledRejection.reason;
-
- if (!(error instanceof Error)) {
- error = new Error(`Promise rejected with value: ${util.inspect(error)}`);
- }
-
- log(error.stack);
- }
-
- process.exitCode = 1;
- }
- });
- };
-
- module.exports = loudRejection;
- // TODO: remove this in the next major version
- module.exports.default = loudRejection;
|