export const retryAll = async ( promises: (() => Promise)[], retries: number = 3, delay: number = 1000 ) => { const wrappedPromises = promises.map((fn) => retry(fn, retries, delay)) return Promise.allSettled(wrappedPromises) } export const retry = async ( fn: () => Promise, retries: number = 3, delay: number = 1000 ): Promise => { try { return await fn() } catch (err) { if (retries === 0) { return Promise.reject(err) } return new Promise((resolve) => setTimeout(() => resolve(retry(fn, retries - 1)), delay) ) } }