diff --git a/packages/core/src/client.ts b/packages/core/src/client.ts index d630a1a815..7bc967ff80 100644 --- a/packages/core/src/client.ts +++ b/packages/core/src/client.ts @@ -47,7 +47,7 @@ import { import { ReadablePromise } from './readablepromise'; import { ClientStorage } from './storage'; import { globalSchema, IndexedStructureDefinition, indexSearchParameter, indexStructureDefinition } from './types'; -import { arrayBufferToBase64, createReference, ProfileResource } from './utils'; +import { arrayBufferToBase64, createReference, ProfileResource, sleep } from './utils'; export const MEDPLUM_VERSION = process.env.MEDPLUM_VERSION ?? ''; @@ -2452,9 +2452,7 @@ export class MedplumClient extends EventTarget { } catch (err: any) { this.retryCatch(retry, maxRetries, err); } - await new Promise((resolve) => { - setTimeout(resolve, retryDelay); - }); + await sleep(retryDelay); } return response as Response; } @@ -2479,9 +2477,7 @@ export class MedplumClient extends EventTarget { } } } - await new Promise((resolve) => { - setTimeout(resolve, retryDelay); - }); + await sleep(retryDelay); } return this.parseResponse(resultResponse as Response, 'POST', statusUrl); } diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 4431a23e80..c786067c18 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -796,3 +796,13 @@ export function findResourceByCode( : getCodeBySystem(r.code || {}, system) === getCodeBySystem(code, system) ); } + +/** + * Sleeps for the specified number of milliseconds. + * @param ms Time delay in milliseconds + * @returns A promise that resolves after the specified number of milliseconds. + */ +export const sleep = (ms: number): Promise => + new Promise((resolve) => { + setTimeout(resolve, ms); + }); diff --git a/packages/server/src/test.setup.ts b/packages/server/src/test.setup.ts index 801a658ba3..2389d59632 100644 --- a/packages/server/src/test.setup.ts +++ b/packages/server/src/test.setup.ts @@ -1,4 +1,4 @@ -import { createReference, getReferenceString, ProfileResource } from '@medplum/core'; +import { createReference, getReferenceString, ProfileResource, sleep } from '@medplum/core'; import { AccessPolicy, Bundle, @@ -198,8 +198,3 @@ export async function waitForAsyncJob(contentLocation: string, app: Express, acc } throw new Error('Async Job did not complete'); } - -const sleep = (ms: number): Promise => - new Promise((resolve) => { - setTimeout(resolve, ms); - });