Skip to content

Commit 4e5c90b

Browse files
anonrigaduh95
authored andcommittedOct 19, 2024··
lib: replace createDeferredPromise util with Promise.withResolvers
PR-URL: #54836 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Chemi Atlow <[email protected]> Reviewed-By: Moshe Atlow <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Robert Nagy <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]>
1 parent 89c96ad commit 4e5c90b

19 files changed

+68
-88
lines changed
 

‎lib/child_process.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const {
3737
ObjectAssign,
3838
ObjectDefineProperty,
3939
ObjectPrototypeHasOwnProperty,
40+
PromiseWithResolvers,
4041
RegExpPrototypeExec,
4142
SafeSet,
4243
StringPrototypeIncludes,
@@ -47,7 +48,6 @@ const {
4748

4849
const {
4950
convertToValidSignal,
50-
createDeferredPromise,
5151
getSystemErrorName,
5252
kEmptyObject,
5353
promisify,
@@ -237,7 +237,7 @@ function exec(command, options, callback) {
237237

238238
const customPromiseExecFunction = (orig) => {
239239
return (...args) => {
240-
const { promise, resolve, reject } = createDeferredPromise();
240+
const { promise, resolve, reject } = PromiseWithResolvers();
241241

242242
promise.child = orig(...args, (err, stdout, stderr) => {
243243
if (err !== null) {

‎lib/internal/abort_controller.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const {
1010
ObjectDefineProperty,
1111
ObjectSetPrototypeOf,
1212
PromiseResolve,
13+
PromiseWithResolvers,
1314
SafeFinalizationRegistry,
1415
SafeSet,
1516
SafeWeakRef,
@@ -28,7 +29,6 @@ const {
2829
kWeakHandler,
2930
} = require('internal/event_target');
3031
const {
31-
createDeferredPromise,
3232
customInspectSymbol,
3333
kEmptyObject,
3434
kEnumerableProperty,
@@ -486,7 +486,7 @@ async function aborted(signal, resource) {
486486
validateObject(resource, 'resource', kValidateObjectAllowObjects);
487487
if (signal.aborted)
488488
return PromiseResolve();
489-
const abortPromise = createDeferredPromise();
489+
const abortPromise = PromiseWithResolvers();
490490
const opts = { __proto__: null, [kWeakHandler]: resource, once: true, [kResistStopPropagation]: true };
491491
signal.addEventListener('abort', abortPromise.resolve, opts);
492492
return abortPromise.promise;

‎lib/internal/blob.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const {
99
ObjectSetPrototypeOf,
1010
PromisePrototypeThen,
1111
PromiseReject,
12+
PromiseWithResolvers,
1213
RegExpPrototypeExec,
1314
RegExpPrototypeSymbolReplace,
1415
StringPrototypeSplit,
@@ -47,7 +48,6 @@ const {
4748
} = require('internal/util/types');
4849

4950
const {
50-
createDeferredPromise,
5151
customInspectSymbol: kInspect,
5252
kEmptyObject,
5353
kEnumerableProperty,
@@ -325,7 +325,7 @@ class Blob {
325325
this.pendingPulls = [];
326326
},
327327
pull(c) {
328-
const { promise, resolve, reject } = createDeferredPromise();
328+
const { promise, resolve, reject } = PromiseWithResolvers();
329329
this.pendingPulls.push({ resolve, reject });
330330
const readNext = () => {
331331
reader.pull((status, buffer) => {
@@ -478,7 +478,7 @@ function createBlobFromFilePath(path, options) {
478478
}
479479

480480
function arrayBuffer(blob) {
481-
const { promise, resolve, reject } = createDeferredPromise();
481+
const { promise, resolve, reject } = PromiseWithResolvers();
482482
const reader = blob[kHandle].getReader();
483483
const buffers = [];
484484
const readNext = () => {

‎lib/internal/fs/watchers.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const {
44
FunctionPrototypeCall,
55
ObjectDefineProperty,
66
ObjectSetPrototypeOf,
7+
PromiseWithResolvers,
78
Symbol,
89
} = primordials;
910

@@ -15,7 +16,6 @@ const {
1516
},
1617
} = require('internal/errors');
1718
const {
18-
createDeferredPromise,
1919
kEmptyObject,
2020
} = require('internal/util');
2121

@@ -325,7 +325,7 @@ async function* watch(filename, options = kEmptyObject) {
325325
throw new AbortError(undefined, { cause: signal?.reason });
326326

327327
const handle = new FSEvent();
328-
let { promise, resolve, reject } = createDeferredPromise();
328+
let { promise, resolve, reject } = PromiseWithResolvers();
329329
const oncancel = () => {
330330
handle.close();
331331
reject(new AbortError(undefined, { cause: signal?.reason }));
@@ -368,7 +368,7 @@ async function* watch(filename, options = kEmptyObject) {
368368

369369
while (!signal?.aborted) {
370370
yield await promise;
371-
({ promise, resolve, reject } = createDeferredPromise());
371+
({ promise, resolve, reject } = PromiseWithResolvers());
372372
}
373373
throw new AbortError(undefined, { cause: signal?.reason });
374374
} finally {

‎lib/internal/streams/duplexify.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const {
44
FunctionPrototypeCall,
5+
PromiseWithResolvers,
56
} = primordials;
67

78
const {
@@ -27,7 +28,6 @@ const { destroyer } = require('internal/streams/destroy');
2728
const Duplex = require('internal/streams/duplex');
2829
const Readable = require('internal/streams/readable');
2930
const Writable = require('internal/streams/writable');
30-
const { createDeferredPromise } = require('internal/util');
3131
const from = require('internal/streams/from');
3232

3333
const {
@@ -209,7 +209,7 @@ module.exports = function duplexify(body, name) {
209209
};
210210

211211
function fromAsyncGen(fn) {
212-
let { promise, resolve } = createDeferredPromise();
212+
let { promise, resolve } = PromiseWithResolvers();
213213
const ac = new AbortController();
214214
const signal = ac.signal;
215215
const value = fn(async function*() {
@@ -221,7 +221,7 @@ function fromAsyncGen(fn) {
221221
if (done) return;
222222
if (signal.aborted)
223223
throw new AbortError(undefined, { cause: signal.reason });
224-
({ promise, resolve } = createDeferredPromise());
224+
({ promise, resolve } = PromiseWithResolvers());
225225
yield chunk;
226226
}
227227
}(), { signal });

‎lib/internal/test_runner/harness.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const {
44
ArrayPrototypePush,
55
FunctionPrototypeBind,
66
PromiseResolve,
7+
PromiseWithResolvers,
78
SafeMap,
89
SafePromiseAllReturnVoid,
910
} = primordials;
@@ -26,7 +27,6 @@ const {
2627
shouldColorizeTestFiles,
2728
} = require('internal/test_runner/utils');
2829
const { queueMicrotask } = require('internal/process/task_queues');
29-
const { createDeferredPromise } = require('internal/util');
3030
const { bigint: hrtime } = process.hrtime;
3131
const resolvedPromise = PromiseResolve();
3232
const testResources = new SafeMap();
@@ -35,7 +35,7 @@ let globalRoot;
3535
testResources.set(reporterScope.asyncId(), reporterScope);
3636

3737
function createTestTree(rootTestOptions, globalOptions) {
38-
const buildPhaseDeferred = createDeferredPromise();
38+
const buildPhaseDeferred = PromiseWithResolvers();
3939
const isFilteringByName = globalOptions.testNamePatterns ||
4040
globalOptions.testSkipPatterns;
4141
const isFilteringByOnly = (globalOptions.isolation === 'process' || process.env.NODE_TEST_CONTEXT) ?

‎lib/internal/test_runner/runner.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const {
1818
ObjectAssign,
1919
PromisePrototypeThen,
2020
PromiseResolve,
21+
PromiseWithResolvers,
2122
SafeMap,
2223
SafePromiseAll,
2324
SafePromiseAllReturnVoid,
@@ -63,7 +64,6 @@ const { getInspectPort, isUsingInspector, isInspectorMessage } = require('intern
6364
const { isRegExp } = require('internal/util/types');
6465
const { pathToFileURL } = require('internal/url');
6566
const {
66-
createDeferredPromise,
6767
kEmptyObject,
6868
} = require('internal/util');
6969
const { kEmitMessage } = require('internal/test_runner/tests_stream');
@@ -744,7 +744,7 @@ function run(options = kEmptyObject) {
744744
};
745745
} else {
746746
runFiles = async () => {
747-
const { promise, resolve: finishBootstrap } = createDeferredPromise();
747+
const { promise, resolve: finishBootstrap } = PromiseWithResolvers();
748748

749749
await root.runInAsyncScope(async () => {
750750
const parentURL = pathToFileURL(cwd + sep).href;

‎lib/internal/test_runner/test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const {
1818
Promise,
1919
PromisePrototypeThen,
2020
PromiseResolve,
21+
PromiseWithResolvers,
2122
ReflectApply,
2223
RegExpPrototypeExec,
2324
SafeMap,
@@ -53,7 +54,6 @@ const {
5354
reporterScope,
5455
} = require('internal/test_runner/utils');
5556
const {
56-
createDeferredPromise,
5757
kEmptyObject,
5858
once: runOnce,
5959
} = require('internal/util');
@@ -137,7 +137,7 @@ function lazyAssertObject(harness) {
137137
}
138138

139139
function stopTest(timeout, signal) {
140-
const deferred = createDeferredPromise();
140+
const deferred = PromiseWithResolvers();
141141
const abortListener = addAbortListener(signal, deferred.resolve);
142142
let timer;
143143
let disposeFunction;
@@ -822,7 +822,7 @@ class Test extends AsyncResource {
822822
// pending for later execution.
823823
this.reporter.enqueue(this.nesting, this.loc, this.name);
824824
if (this.root.harness.buildPromise || !this.parent.hasConcurrency()) {
825-
const deferred = createDeferredPromise();
825+
const deferred = PromiseWithResolvers();
826826

827827
deferred.test = this;
828828
this.parent.addPendingSubtest(deferred);

‎lib/internal/test_runner/utils.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const {
1414
NumberParseInt,
1515
NumberPrototypeToFixed,
1616
ObjectGetOwnPropertyDescriptor,
17+
PromiseWithResolvers,
1718
RegExp,
1819
RegExpPrototypeExec,
1920
SafeMap,
@@ -29,7 +30,6 @@ const { AsyncResource } = require('async_hooks');
2930
const { relative, sep } = require('path');
3031
const { createWriteStream } = require('fs');
3132
const { pathToFileURL } = require('internal/url');
32-
const { createDeferredPromise } = require('internal/util');
3333
const { getOptionValue } = require('internal/options');
3434
const { green, yellow, red, white, shouldColorize } = require('internal/util/colors');
3535

@@ -62,7 +62,7 @@ const kDefaultPattern = `**/{${ArrayPrototypeJoin(kPatterns, ',')}}.{${ArrayProt
6262

6363
function createDeferredCallback() {
6464
let calledCount = 0;
65-
const { promise, resolve, reject } = createDeferredPromise();
65+
const { promise, resolve, reject } = PromiseWithResolvers();
6666
const cb = (err) => {
6767
calledCount++;
6868

‎lib/internal/util.js

-12
Original file line numberDiff line numberDiff line change
@@ -543,17 +543,6 @@ function sleep(msec) {
543543
_sleep(msec);
544544
}
545545

546-
function createDeferredPromise() {
547-
let resolve;
548-
let reject;
549-
const promise = new Promise((res, rej) => {
550-
resolve = res;
551-
reject = rej;
552-
});
553-
554-
return { promise, resolve, reject };
555-
}
556-
557546
// https://heycam.github.io/webidl/#define-the-operations
558547
function defineOperation(target, name, method) {
559548
ObjectDefineProperty(target, name, {
@@ -872,7 +861,6 @@ module.exports = {
872861
cachedResult,
873862
convertToValidSignal,
874863
createClassWrapper,
875-
createDeferredPromise,
876864
decorateErrorStack,
877865
defineOperation,
878866
defineLazyProperties,

‎lib/internal/webstreams/adapters.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const {
77
ObjectEntries,
88
PromisePrototypeThen,
99
PromiseResolve,
10+
PromiseWithResolvers,
1011
SafePromiseAll,
1112
SafePromisePrototypeFinally,
1213
SafeSet,
@@ -64,7 +65,6 @@ const {
6465
} = require('internal/errors');
6566

6667
const {
67-
createDeferredPromise,
6868
kEmptyObject,
6969
normalizeEncoding,
7070
} = require('internal/util');
@@ -213,7 +213,7 @@ function newWritableStreamFromStreamWritable(streamWritable) {
213213

214214
write(chunk) {
215215
if (streamWritable.writableNeedDrain || !streamWritable.write(chunk)) {
216-
backpressurePromise = createDeferredPromise();
216+
backpressurePromise = PromiseWithResolvers();
217217
return SafePromisePrototypeFinally(
218218
backpressurePromise.promise, () => {
219219
backpressurePromise = undefined;
@@ -227,7 +227,7 @@ function newWritableStreamFromStreamWritable(streamWritable) {
227227

228228
close() {
229229
if (closed === undefined && !isWritableEnded(streamWritable)) {
230-
closed = createDeferredPromise();
230+
closed = PromiseWithResolvers();
231231
streamWritable.end();
232232
return closed.promise;
233233
}
@@ -900,7 +900,7 @@ function newWritableStreamFromStreamBase(streamBase, strategy) {
900900
}
901901

902902
function doWrite(chunk, controller) {
903-
const promise = createDeferredPromise();
903+
const promise = PromiseWithResolvers();
904904
let ret;
905905
let req;
906906
try {
@@ -933,7 +933,7 @@ function newWritableStreamFromStreamBase(streamBase, strategy) {
933933
},
934934

935935
close() {
936-
const promise = createDeferredPromise();
936+
const promise = PromiseWithResolvers();
937937
const req = new ShutdownWrap();
938938
req.oncomplete = () => promise.resolve();
939939
const err = streamBase.shutdown(req);
@@ -1000,7 +1000,7 @@ function newReadableStreamFromStreamBase(streamBase, strategy, options = kEmptyO
10001000
},
10011001

10021002
cancel() {
1003-
const promise = createDeferredPromise();
1003+
const promise = PromiseWithResolvers();
10041004
try {
10051005
ondone();
10061006
} catch (error) {

0 commit comments

Comments
 (0)