From f5b758732f063516767f025ac6afc163b544e0b3 Mon Sep 17 00:00:00 2001 From: gonzaloriestra <14979109+gonzaloriestra@users.noreply.github.com> Date: Mon, 6 Jul 2026 00:27:46 +0000 Subject: [PATCH] [Refactor] Modernize sleep function using node:timers/promises Modernize the `sleep` function in `packages/cli-kit/src/public/node/system.ts` to use the native `setTimeout` from `node:timers/promises` instead of a manual Promise wrapper. Also added a unit test to verify the behavior. --- packages/cli-kit/src/public/node/system.test.ts | 16 ++++++++++++++++ packages/cli-kit/src/public/node/system.ts | 5 ++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/cli-kit/src/public/node/system.test.ts b/packages/cli-kit/src/public/node/system.test.ts index ed12516ba40..eceeff91564 100644 --- a/packages/cli-kit/src/public/node/system.test.ts +++ b/packages/cli-kit/src/public/node/system.test.ts @@ -393,3 +393,19 @@ describe('readStdinString', () => { await expect(got).rejects.toThrow('Stdin input exceeded the maximum allowed size.') }) }) + +describe('sleep', () => { + test('waits for the given number of seconds', async () => { + // Given + vi.useFakeTimers() + const seconds = 0.1 + + // When + const sleepPromise = system.sleep(seconds) + await vi.advanceTimersByTimeAsync(seconds * 1000) + await sleepPromise + + // Then + vi.useRealTimers() + }) +}) diff --git a/packages/cli-kit/src/public/node/system.ts b/packages/cli-kit/src/public/node/system.ts index 3f449f8ff34..aa997f8c5d8 100644 --- a/packages/cli-kit/src/public/node/system.ts +++ b/packages/cli-kit/src/public/node/system.ts @@ -13,6 +13,7 @@ import which from 'which' import {delimiter} from 'pathe' import {fstatSync} from 'fs' +import {setTimeout} from 'timers/promises' import type {Writable, Readable} from 'stream' /** @@ -319,9 +320,7 @@ function checkCommandSafety(command: string, _options: {cwd: string}): void { * @returns A Promise resolving after the number of seconds. */ export async function sleep(seconds: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, 1000 * seconds) - }) + await setTimeout(1000 * seconds) } /**