export const TRANSIENT_DOWNLOAD_STATUSES = [ 408, 425, 429, 500, 502, 503, 504, ] as const; export function leaseStorageKey(id: string): string { return `quickdrop-lease:${id}`; } export async function retryTransient( operation: () => Promise, attempts = 5, ): Promise { for (let attempt = 0; ; attempt++) { try { const response = await operation(); if ( response.ok || !TRANSIENT_DOWNLOAD_STATUSES.includes(response.status as never) || attempt >= attempts - 1 ) return response; } catch (error) { if (attempt >= attempts - 1) throw error; } await new Promise((resolve) => setTimeout( resolve, Math.round(500 * 2 ** attempt * (0.8 + Math.random() * 0.4)), ), ); } }