export async function retryAsync( fn: () => Promise, attempts = 3, initialDelayMs = 300, ): Promise { let lastErr: unknown; for (let i = 0; i < attempts; i += 1) { try { return await fn(); } catch (err) { lastErr = err; if (i === attempts - 1) break; const delay = initialDelayMs * 2 ** i; await new Promise((r) => setTimeout(r, delay)); } } throw lastErr; }