From 84349ffdba2ede73fca63be71b18ca0762674482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Sat, 10 May 2025 10:39:25 +0200 Subject: [PATCH] refactor(promise-helpers): reuse promise Symbol Instead of asking the global namespace for it every time, store the reference and put access it faster each time it's used. --- .changeset/cruel-colts-show.md | 5 +++++ packages/promise-helpers/src/index.ts | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/cruel-colts-show.md diff --git a/.changeset/cruel-colts-show.md b/.changeset/cruel-colts-show.md new file mode 100644 index 00000000000..d1c802b7d2b --- /dev/null +++ b/.changeset/cruel-colts-show.md @@ -0,0 +1,5 @@ +--- +'@whatwg-node/promise-helpers': patch +--- + +Reuse fake promise Symbol diff --git a/packages/promise-helpers/src/index.ts b/packages/promise-helpers/src/index.ts index f6efaa1a896..d70fa1f6b5f 100644 --- a/packages/promise-helpers/src/index.ts +++ b/packages/promise-helpers/src/index.ts @@ -1,7 +1,7 @@ export type MaybePromise = Promise | T; export type MaybePromiseLike = PromiseLike | T; -const FAKE_PROMISE_SYMBOL_NAME = '@whatwg-node/promise-helpers/FakePromise'; +const kFakePromise = Symbol.for('@whatwg-node/promise-helpers/FakePromise'); export function isPromise(value: MaybePromise): value is Promise; export function isPromise(value: MaybePromiseLike): value is PromiseLike; @@ -89,7 +89,7 @@ export function fakePromise(value: MaybePromiseLike): Promise { }, [Symbol.toStringTag]: 'Promise', __fakePromiseValue: value, - [Symbol.for(FAKE_PROMISE_SYMBOL_NAME)]: 'resolved', + [kFakePromise]: 'resolved', } as Promise; } @@ -197,7 +197,7 @@ export function fakeRejectPromise(error: unknown): Promise { }, __fakeRejectError: error, [Symbol.toStringTag]: 'Promise', - [Symbol.for(FAKE_PROMISE_SYMBOL_NAME)]: 'rejected', + [kFakePromise]: 'rejected', } as Promise; } @@ -315,11 +315,11 @@ function iteratorResult(value: T): IteratorResult { } function isFakePromise(value: any): value is Promise & { __fakePromiseValue: T } { - return (value as any)?.[Symbol.for(FAKE_PROMISE_SYMBOL_NAME)] === 'resolved'; + return (value as any)?.[kFakePromise] === 'resolved'; } function isFakeRejectPromise(value: any): value is Promise & { __fakeRejectError: any } { - return (value as any)?.[Symbol.for(FAKE_PROMISE_SYMBOL_NAME)] === 'rejected'; + return (value as any)?.[kFakePromise] === 'rejected'; } export function promiseLikeFinally(