GeezerVison is showing github.com — lib: let abort_controller target be EventTarget · nodejs/node@b2f8e8d
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 +9-7Lines changed: 9 additions & 7 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
9 | 9 | } = primordials; |
10 | 10 |
|
11 | 11 | const { |
| 12 | + defineEventHandler, |
12 | 13 | EventTarget, |
13 | 14 | Event, |
14 | 15 | kTrustEvent |
@@ -52,21 +53,22 @@ function abortSignal(signal) { |
52 | 53 | const event = new Event('abort', { |
53 | 54 | [kTrustEvent]: true |
54 | 55 | }); |
55 | | - if (typeof signal.onabort === 'function') { |
56 | | - signal.onabort(event); |
57 | | - } |
58 | 56 | signal.dispatchEvent(event); |
59 | 57 | } |
60 | 58 |
|
| 59 | +// TODO(joyeecheung): V8 snapshot does not support instance member |
| 60 | +// initializers for now: |
| 61 | +// https://bugs.chromium.org/p/v8/issues/detail?id=10704 |
| 62 | +const kSignal = Symbol('signal'); |
61 | 63 | class AbortController { |
62 | | - #signal = new AbortSignal(); |
63 | | - |
64 | 64 | constructor() { |
| 65 | + this[kSignal] = new AbortSignal(); |
65 | 66 | emitExperimentalWarning('AbortController'); |
| 67 | + defineEventHandler(this[kSignal], 'abort'); |
66 | 68 | } |
67 | 69 |
|
68 | | - get signal() { return this.#signal; } |
69 | | - abort() { abortSignal(this.#signal); } |
| 70 | + get signal() { return this[kSignal]; } |
| 71 | + abort() { abortSignal(this[kSignal]); } |
70 | 72 |
|
71 | 73 | [customInspectSymbol](depth, options) { |
72 | 74 | return customInspect(this, { |
|
Collapse file
Copy file name to clipboardExpand all lines: lib/internal/event_target.js +2-3Lines changed: 2 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -333,14 +333,13 @@ class EventTarget { |
333 | 333 | } |
334 | 334 | return event; |
335 | 335 | }; |
| 336 | + if (event !== undefined) |
| 337 | + event[kTarget] = this; |
336 | 338 |
|
337 | 339 | const root = this[kEvents].get(type); |
338 | 340 | if (root === undefined || root.next === undefined) |
339 | 341 | return true; |
340 | 342 |
|
341 | | - if (event !== undefined) |
342 | | - event[kTarget] = this; |
343 | | - |
344 | 343 | let handler = root.next; |
345 | 344 | let next; |
346 | 345 |
|
|