GeezerVison is showing github.com — lib: use private field in AbortController · nodejs/node@73ba883
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/internal/abort_controller.js +3-16Lines changed: 3 additions & 16 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -292,34 +292,21 @@ function abortSignal(signal, reason) { |
292 | 292 | signal.dispatchEvent(event); |
293 | 293 | } |
294 | 294 |
|
295 | | -// TODO(joyeecheung): use private fields and we'll get invalid access |
296 | | -// validation from V8 instead of throwing ERR_INVALID_THIS ourselves. |
297 | | -const kSignal = Symbol('signal'); |
298 | | - |
299 | | -function validateAbortController(obj) { |
300 | | - if (obj?.[kSignal] === undefined) |
301 | | - throw new ERR_INVALID_THIS('AbortController'); |
302 | | -} |
303 | | - |
304 | 295 | class AbortController { |
305 | | - constructor() { |
306 | | - this[kSignal] = createAbortSignal(); |
307 | | - } |
| 296 | + #signal = createAbortSignal(); |
308 | 297 |
|
309 | 298 | /** |
310 | 299 | * @type {AbortSignal} |
311 | 300 | */ |
312 | 301 | get signal() { |
313 | | - validateAbortController(this); |
314 | | - return this[kSignal]; |
| 302 | + return this.#signal; |
315 | 303 | } |
316 | 304 |
|
317 | 305 | /** |
318 | 306 | * @param {any} reason |
319 | 307 | */ |
320 | 308 | abort(reason = new DOMException('This operation was aborted', 'AbortError')) { |
321 | | - validateAbortController(this); |
322 | | - abortSignal(this[kSignal], reason); |
| 309 | + abortSignal(this.#signal, reason); |
323 | 310 | } |
324 | 311 |
|
325 | 312 | [customInspectSymbol](depth, options) { |
|
Collapse file
Copy file name to clipboardExpand all lines: test/parallel/test-abortcontroller.js +3-3Lines changed: 3 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -108,11 +108,11 @@ const { setTimeout: sleep } = require('timers/promises'); |
108 | 108 | for (const badController of badAbortControllers) { |
109 | 109 | throws( |
110 | 110 | () => acSignalGet.call(badController), |
111 | | - { code: 'ERR_INVALID_THIS', name: 'TypeError' } |
| 111 | + { name: 'TypeError' } |
112 | 112 | ); |
113 | 113 | throws( |
114 | 114 | () => acAbort.call(badController), |
115 | | - { code: 'ERR_INVALID_THIS', name: 'TypeError' } |
| 115 | + { name: 'TypeError' } |
116 | 116 | ); |
117 | 117 | } |
118 | 118 | } |
@@ -139,7 +139,7 @@ const { setTimeout: sleep } = require('timers/promises'); |
139 | 139 | for (const badSignal of badAbortSignals) { |
140 | 140 | throws( |
141 | 141 | () => signalAbortedGet.call(badSignal), |
142 | | - { code: 'ERR_INVALID_THIS', name: 'TypeError' } |
| 142 | + { name: 'TypeError' } |
143 | 143 | ); |
144 | 144 | } |
145 | 145 | } |
|