export async function timed unknown>( ms: number, fn: F, ): Promise>> { const abortController = new AbortController() const timer = setTimeout(() => abortController.abort(), ms) const signal = abortController.signal try { return (await fn(signal)) as Awaited> } finally { clearTimeout(timer) abortController.abort() } }