Files
bitvid/bitvid-working-webtorrent/tests/test-helpers/wait-for.mjs
T
2026-02-01 13:21:48 -05:00

21 lines
534 B
JavaScript

export async function waitFor(callback, { timeout = 2000, interval = 50, message = "waitFor timed out" } = {}) {
const start = Date.now();
let lastError;
while (true) {
try {
const result = await callback();
return result;
} catch (error) {
lastError = error;
}
if (Date.now() - start > timeout) {
const errorMsg = lastError ? `${message}: ${lastError.message}` : message;
throw new Error(errorMsg);
}
await new Promise((resolve) => setTimeout(resolve, interval));
}
}