UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

36 lines 1.29 kB
export const DEFAULT_ERROR_REPORTING_TIMEOUT_MS = 1000; export class ErrorReportingTimeoutError extends Error { code = "ERROR_REPORTING_TIMEOUT"; timeoutMs; constructor(timeoutMs) { super(`Error reporting timed out after ${timeoutMs}ms.`); this.name = "ErrorReportingTimeoutError"; this.timeoutMs = timeoutMs; } } export function errorReportingObserverTimeout(timeoutMs) { return timeoutMs === false || (Number.isFinite(timeoutMs) && timeoutMs > 0) ? timeoutMs : DEFAULT_ERROR_REPORTING_TIMEOUT_MS; } export async function runErrorReportingOperation(operation, timeoutMs = DEFAULT_ERROR_REPORTING_TIMEOUT_MS) { if (timeoutMs === false) return operation(); if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) { throw new TypeError("Error reporting timeoutMs must be a positive number."); } let timeout; try { return await Promise.race([ Promise.resolve().then(operation), new Promise((_, reject) => { timeout = setTimeout(() => reject(new ErrorReportingTimeoutError(timeoutMs)), timeoutMs); }), ]); } finally { if (timeout !== undefined) clearTimeout(timeout); } } //# sourceMappingURL=internal.js.map