From 911ea2079733c36125a290426b5b3bf0e77332e6 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Sat, 19 Nov 2022 15:13:08 -0500 Subject: [PATCH] lib: improve AbortController creation duration PR-URL: https://github.com/nodejs/node/pull/45525 Reviewed-By: Matteo Collina Reviewed-By: Antoine du Hamel --- lib/internal/abort_controller.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 7fbc4ed756c3c5..49419736f65bf6 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -318,6 +318,8 @@ function validateAbortController(obj) { } class AbortController { + #signal; + constructor() { this[kSignal] = createAbortSignal(); } @@ -327,7 +329,8 @@ class AbortController { */ get signal() { validateAbortController(this); - return this[kSignal]; + this.#signal ??= createAbortSignal(); + return this.#signal; } /** @@ -335,7 +338,7 @@ class AbortController { */ abort(reason = new DOMException('This operation was aborted', 'AbortError')) { validateAbortController(this); - abortSignal(this[kSignal], reason); + abortSignal(this.#signal ??= createAbortSignal(), reason); } [customInspectSymbol](depth, options) {