12345678910111213141516171819202122232425262728 |
- 'use strict';
- const assert = require('assert');
- const is = require('is-type-of');
- const once = require('once');
- module.exports = getExitFunction;
- function getExitFunction(beforeExit, logger, label) {
- if (beforeExit) assert(is.function(beforeExit), 'beforeExit only support function');
- return once(code => {
- if (!beforeExit) process.exit(code);
- Promise.resolve()
- .then(() => {
- return beforeExit();
- })
- .then(() => {
- logger.info('[%s] beforeExit success', label);
- process.exit(code);
- })
- .catch(err => {
- logger.error('[%s] beforeExit fail, error: %s', label, err.message);
- process.exit(code);
- });
- });
- }
|