export async function retry(callback, shouldRetry, delay) { while (true) { try { return await callback(); } catch (err) { if (shouldRetry(err)) { await delay(); } else { throw err; } } } } export function timedDelay(millis) { return async () => await sleep(millis); } function sleep(millis) { return new Promise((resolve) => setTimeout(resolve, millis)); }