@pazznetwork/ngx-chat
Version:
[](https://travis-ci.com/pazznetwork/ngx-chat) [](https://coveralls.io/github/pazzn
28 lines • 3.03 kB
JavaScript
export class TimeoutError extends Error {
constructor(message) {
super(message);
this.name = 'TimeoutError';
}
}
export function delay(ms) {
let localDelay;
const promise = new Promise(resolve => {
localDelay = setTimeout(resolve, ms);
});
promise.timeout = localDelay;
return promise;
}
export function timeout(promise, ms) {
const promiseDelay = delay(ms);
// eslint-disable-next-line unicorn/consistent-function-scoping
function cancelDelay() {
clearTimeout(promiseDelay.timeout);
}
return Promise.race([
promise.finally(cancelDelay),
promiseDelay.then(() => {
throw new TimeoutError();
}),
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMtdGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS91dGlscy10aW1lb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFhLFNBQVEsS0FBSztJQUNuQyxZQUFZLE9BQWdCO1FBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO0lBQy9CLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsRUFBVTtJQUM1QixJQUFJLFVBQVUsQ0FBQztJQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0YsT0FBZSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDdEMsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBcUIsRUFBRSxFQUFVO0lBQ3JELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUvQiwrREFBK0Q7SUFDL0QsU0FBUyxXQUFXO1FBQ2hCLFlBQVksQ0FBRSxZQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDZixPQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0tBQ0wsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ1RpbWVvdXRFcnJvcic7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsYXkobXM6IG51bWJlcikge1xuICAgIGxldCBsb2NhbERlbGF5O1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgbG9jYWxEZWxheSA9IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpO1xuICAgIH0pO1xuICAgIChwcm9taXNlIGFzIGFueSkudGltZW91dCA9IGxvY2FsRGVsYXk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lb3V0KHByb21pc2U6IFByb21pc2U8YW55PiwgbXM6IG51bWJlcikge1xuICAgIGNvbnN0IHByb21pc2VEZWxheSA9IGRlbGF5KG1zKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZ1xuICAgIGZ1bmN0aW9uIGNhbmNlbERlbGF5KCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoKHByb21pc2VEZWxheSBhcyBhbnkpLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgICAgICAocHJvbWlzZSBhcyBhbnkpLmZpbmFsbHkoY2FuY2VsRGVsYXkpLFxuICAgICAgICBwcm9taXNlRGVsYXkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGltZW91dEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgIF0pO1xufVxuIl19