Skip to content

Commit 8396660

Browse files
ljharbCeres6
authored andcommitted
bootstrap: use correct descriptor for Symbol.{dispose,asyncDispose}
Followup to nodejs#48518; fixes nodejs#48699 PR-URL: nodejs#48703 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Nitzan Uziely <[email protected]> Reviewed-By: Moshe Atlow <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent 2ed1b28 commit 8396660

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

lib/internal/process/pre_execution.js

+19-2
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,26 @@ function prepareExecution(options) {
136136
function setupSymbolDisposePolyfill() {
137137
// TODO(MoLow): Remove this polyfill once Symbol.dispose and Symbol.asyncDispose are available in V8.
138138
// eslint-disable-next-line node-core/prefer-primordials
139-
Symbol.dispose ??= SymbolDispose;
139+
if (typeof Symbol.dispose !== 'symbol') {
140+
ObjectDefineProperty(Symbol, 'dispose', {
141+
__proto__: null,
142+
configurable: false,
143+
enumerable: false,
144+
value: SymbolDispose,
145+
writable: false,
146+
});
147+
}
148+
140149
// eslint-disable-next-line node-core/prefer-primordials
141-
Symbol.asyncDispose ??= SymbolAsyncDispose;
150+
if (typeof Symbol.asyncDispose !== 'symbol') {
151+
ObjectDefineProperty(Symbol, 'asyncDispose', {
152+
__proto__: null,
153+
configurable: false,
154+
enumerable: false,
155+
value: SymbolAsyncDispose,
156+
writable: false,
157+
});
158+
}
142159
}
143160

144161
function setupUserModules(isLoaderWorker = false) {

0 commit comments

Comments
 (0)