@tgsnake/core
Version:
Pure Telegram MTProto library for nodejs
45 lines (44 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Timeout = void 0;
const index_js_1 = require("./errors/index.js");
class Timeout {
_task = [];
constructor() { }
run(task, time, onTimeout) {
if (time === Infinity)
return task;
return new Promise((res, rej) => {
let index = this._task.length;
let timeout = setTimeout(() => {
if (onTimeout) {
onTimeout(time, index);
}
else {
rej(new index_js_1.TimeoutError(time));
}
task.catch(rej).finally(() => {
return 'Running timeout';
});
}, time);
this._task.push(timeout);
task
.then(res)
.catch(rej)
.finally(() => {
clearTimeout(timeout);
this._task = this._task.filter((t) => !t._destroyed);
});
});
}
clear() {
for (let i = 0; i < this._task.length; i++) {
let task = this._task[i];
if (!task._destroyed) {
clearTimeout(task);
}
this._task.splice(i, 1);
}
}
}
exports.Timeout = Timeout;