Skip to content

Commit be49c93

Browse files
authored
chore: extract createDeferredPromise from fetch/utils.js (#4345)
1 parent b6dc60e commit be49c93

File tree

6 files changed

+39
-19
lines changed

6 files changed

+39
-19
lines changed

lib/util/promise.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict'
2+
3+
/**
4+
* @template {*} T
5+
* @typedef {Object} DeferredPromise
6+
* @property {Promise<T>} promise
7+
* @property {(value?: T) => void} resolve
8+
* @property {(reason?: any) => void} reject
9+
*/
10+
11+
/**
12+
* @template {*} T
13+
* @returns {DeferredPromise<T>} An object containing a promise and its resolve/reject methods.
14+
*/
15+
function createDeferredPromise () {
16+
let res
17+
let rej
18+
const promise = new Promise((resolve, reject) => {
19+
res = resolve
20+
rej = reject
21+
})
22+
23+
return { promise, resolve: res, reject: rej }
24+
}
25+
26+
module.exports = {
27+
createDeferredPromise
28+
}

lib/web/cache/cache.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
'use strict'
22

3+
const assert = require('node:assert')
4+
35
const { kConstruct } = require('../../core/symbols')
46
const { urlEquals, getFieldValues } = require('./util')
57
const { kEnumerableProperty, isDisturbed } = require('../../core/util')
68
const { webidl } = require('../webidl')
79
const { cloneResponse, fromInnerResponse, getResponseState } = require('../fetch/response')
810
const { Request, fromInnerRequest, getRequestState } = require('../fetch/request')
911
const { fetching } = require('../fetch/index')
10-
const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')
11-
const assert = require('node:assert')
12+
const { urlIsHttpHttpsScheme, readAllBytes } = require('../fetch/util')
13+
const { createDeferredPromise } = require('../../util/promise')
1214

1315
/**
1416
* @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation

lib/web/fetch/body.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const util = require('../../core/util')
44
const {
55
ReadableStreamFrom,
66
readableStreamClose,
7-
createDeferredPromise,
87
fullyReadBody,
98
extractMimeType,
109
utf8DecodeBytes
@@ -17,6 +16,8 @@ const { isErrored, isDisturbed } = require('node:stream')
1716
const { isArrayBuffer } = require('node:util/types')
1817
const { serializeAMimeType } = require('./data-url')
1918
const { multipartFormDataParser } = require('./formdata-parser')
19+
const { createDeferredPromise } = require('../../util/promise')
20+
2021
let random
2122

2223
try {

lib/web/fetch/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ const {
3030
crossOriginResourcePolicyCheck,
3131
determineRequestsReferrer,
3232
coarsenedSharedCurrentTime,
33-
createDeferredPromise,
3433
sameOrigin,
3534
isCancelled,
3635
isAborted,
@@ -63,6 +62,7 @@ const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = requ
6362
const { getGlobalDispatcher } = require('../../global')
6463
const { webidl } = require('../webidl')
6564
const { STATUS_CODES } = require('node:http')
65+
const { createDeferredPromise } = require('../../util/promise')
6666
const GET_OR_HEAD = ['GET', 'HEAD']
6767

6868
const defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined'

lib/web/fetch/util.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -924,17 +924,6 @@ function sameOrigin (A, B) {
924924
return false
925925
}
926926

927-
function createDeferredPromise () {
928-
let res
929-
let rej
930-
const promise = new Promise((resolve, reject) => {
931-
res = resolve
932-
rej = reject
933-
})
934-
935-
return { promise, resolve: res, reject: rej }
936-
}
937-
938927
function isAborted (fetchParams) {
939928
return fetchParams.controller.state === 'aborted'
940929
}
@@ -1742,7 +1731,6 @@ module.exports = {
17421731
isAborted,
17431732
isCancelled,
17441733
isValidEncodedURL,
1745-
createDeferredPromise,
17461734
ReadableStreamFrom,
17471735
tryUpgradeRequestToAPotentiallyTrustworthyURL,
17481736
clampAndCoarsenConnectionTimingInfo,

lib/web/websocket/stream/websocketstream.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

3-
const { createDeferredPromise, environmentSettingsObject } = require('../../fetch/util')
3+
const { createDeferredPromise } = require('../../../util/promise')
4+
const { environmentSettingsObject } = require('../../fetch/util')
45
const { states, opcodes, sentCloseFrameState } = require('../constants')
56
const { webidl } = require('../../webidl')
67
const { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require('../util')
@@ -21,11 +22,11 @@ class WebSocketStream {
2122
#url
2223

2324
// Each WebSocketStream object has an associated opened promise , which is a promise.
24-
/** @type {ReturnType<typeof createDeferredPromise>} */
25+
/** @type {import('../../../util/promise').DeferredPromise} */
2526
#openedPromise
2627

2728
// Each WebSocketStream object has an associated closed promise , which is a promise.
28-
/** @type {ReturnType<typeof createDeferredPromise>} */
29+
/** @type {import('../../../util/promise').DeferredPromise} */
2930
#closedPromise
3031

3132
// Each WebSocketStream object has an associated readable stream , which is a ReadableStream .

0 commit comments

Comments
 (0)