export async function runThrottledCheck(checkFn, { timeout, interval }) { return runCheckRecursive(checkFn, timeout, interval, 1) } async function runCheckRecursive(checkFn, timeout, interval, iteration) { return new Promise((resolve) => { if (iteration * interval >= timeout) { resolve(checkFn({ timeout: true })) } else if (checkFn({ timeout: false }) !== 'continue') { resolve(checkFn({ timeout: false })) } else { setTimeout(() => { resolve(runCheckRecursive(checkFn, timeout, interval, iteration + 1)) }, interval) } }) }