child-process-promise
Version:
Simple wrapper around the "child_process" module that makes use of promises
63 lines (49 loc) • 1.41 kB
JavaScript
;
var Promise;
if (require('node-version').major >= 4) {
Promise = global.Promise;
} else {
// Don't use the native Promise in Node.js <4 since it doesn't support subclassing
Promise = require('promise-polyfill');
}
class ChildProcessPromise extends Promise {
constructor(executor) {
var resolve;
var reject;
super((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
if (executor) {
executor(resolve, reject);
}
});
this._cpResolve = resolve;
this._cpReject = reject;
this.childProcess = undefined;
}
progress(callback) {
process.nextTick(() => {
callback(this.childProcess);
});
return this;
}
then(onFulfilled, onRejected) {
var newPromise = super.then(onFulfilled, onRejected);
newPromise.childProcess = this.childProcess;
return newPromise;
}
catch(onRejected) {
var newPromise = super.catch(onRejected);
newPromise.childProcess = this.childProcess;
return newPromise;
}
done() {
this.catch((e) => {
process.nextTick(() => {
throw e;
});
});
}
}
ChildProcessPromise.prototype.fail = ChildProcessPromise.prototype.catch;
module.exports = ChildProcessPromise;