diff --git a/lib/child_process.js b/lib/child_process.js index f51072126e21cd..6f054923dcde95 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -47,6 +47,7 @@ const { const { promisify, convertToValidSignal, + createInvertedPromise, getSystemErrorName } = require('internal/util'); const { isArrayBufferView } = require('internal/util/types'); @@ -184,12 +185,7 @@ function exec(command, options, callback) { const customPromiseExecFunction = (orig) => { return (...args) => { - let resolve; - let reject; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); + const { promise, resolve, reject } = createInvertedPromise(); promise.child = orig(...args, (err, stdout, stderr) => { if (err !== null) { diff --git a/lib/internal/blob.js b/lib/internal/blob.js index e49b3710e0768a..b0d10bdfc4ea91 100644 --- a/lib/internal/blob.js +++ b/lib/internal/blob.js @@ -29,6 +29,7 @@ const { } = require('internal/util/types'); const { + createInvertedPromise, customInspectSymbol: kInspect, emitExperimentalWarning, } = require('internal/util'); @@ -56,15 +57,6 @@ const kLength = Symbol('kLength'); let Buffer; -function deferred() { - let res, rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - return { promise, resolve: res, reject: rej }; -} - function lazyBuffer() { if (Buffer === undefined) Buffer = require('buffer').Buffer; @@ -210,7 +202,7 @@ class Blob extends JSTransferable { promise, resolve, reject - } = deferred(); + } = createInvertedPromise(); job.ondone = (err, ab) => { if (err !== undefined) return reject(new AbortError()); diff --git a/lib/internal/util.js b/lib/internal/util.js index 5d5a2b14a708b4..f18ac0f698705a 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -420,11 +420,23 @@ function sleep(msec) { _sleep(msec); } +function createInvertedPromise() { + let resolve; + let reject; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + + return { promise, resolve, reject }; +} + module.exports = { assertCrypto, cachedResult, convertToValidSignal, createClassWrapper, + createInvertedPromise, decorateErrorStack, deprecate, emitExperimentalWarning,