Most straight-forward and simple implementation of 'Deferred Object' concept based on native promises
npm install --save npdefer
import Deferred from 'npdefer';
const processExit = new Deferred();
process.on('close', () => {
processExit.resolve("bye");
});
processExit.promise.then(message => {
console.log(message);
})