UNPKG

@xapp/arachne-utils

Version:

43 lines 1.2 kB
"use strict"; /*! Copyright (c) 2020, XAPP AI */ Object.defineProperty(exports, "__esModule", { value: true }); exports.promiseWithTimeout = exports.TimeoutError = void 0; class TimeoutError extends Error { constructor() { super(...arguments); this.name = "TimeoutError"; } } exports.TimeoutError = TimeoutError; /** * Wraps the function that returns a promise with a timeout * * @param timeoutMs * @param promise * @param failureMessage */ const promiseWithTimeout = (timeoutMs, promise, failureMessage) => { let timeoutHandle; let error; if (!failureMessage) { error = new TimeoutError(); } else if (typeof failureMessage === "string") { error = new TimeoutError(failureMessage); } else { error = failureMessage; } const timeoutPromise = new Promise((accept, reject) => { timeoutHandle = setTimeout(() => reject(error), timeoutMs); }); return Promise.race([ promise(), timeoutPromise, ]).then((result) => { clearTimeout(timeoutHandle); return result; }); }; exports.promiseWithTimeout = promiseWithTimeout; //# sourceMappingURL=promiseWithTimeout.js.map