export function withTimeout(fn: (signal: AbortSignal) => Promise, ms: number): Promise { const controller = new AbortController(); const timeoutId = setTimeout(() => { controller.abort(); }, ms); return fn(controller.signal).finally(() => { clearTimeout(timeoutId); }); }