UNPKG

@opentelemetry/core

Version:

OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.

39 lines (38 loc) • 1.23 kB
//#region src/utils/timeout.ts /** * Error that is thrown on timeouts. */ var TimeoutError = class TimeoutError extends Error { constructor(message) { super(message); Object.setPrototypeOf(this, TimeoutError.prototype); } }; /** * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise * rejects, and resolves if the specified promise resolves. * * <p> NOTE: this operation will continue even after it throws a {@link TimeoutError}. * * @param promise promise to use with timeout. * @param timeout the timeout in milliseconds until the returned promise is rejected. */ function callWithTimeout(promise, timeout) { let timeoutHandle; const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) { timeoutHandle = setTimeout(function timeoutHandler() { reject(new TimeoutError("Operation timed out.")); }, timeout); }); return Promise.race([promise, timeoutPromise]).then((result) => { clearTimeout(timeoutHandle); return result; }, (reason) => { clearTimeout(timeoutHandle); throw reason; }); } //#endregion exports.TimeoutError = TimeoutError; exports.callWithTimeout = callWithTimeout; //# sourceMappingURL=timeout.cjs.map