export function timeout(milliseconds: number, signal?: AbortSignal): Promise { let resolve: (value: void | PromiseLike) => void const promise = new Promise((...args) => [resolve] = args) const timeout = setTimeout(() => resolve(), milliseconds) signal?.addEventListener('abort', () => { clearTimeout(timeout) resolve() }) return promise }