export function retry( num: number, del: number, thunk: () => Promise ): Promise { return thunk().catch((error) => { if (num === 0) { throw error } return delay(del).then(() => retry(num - 1, del, thunk)) }) } export function delay(num: number) { return new Promise((r) => setTimeout(r, num)) }