UNPKG

@tgsnake/core

Version:

Pure Telegram MTProto library for nodejs

45 lines (44 loc) 1.32 kB
"use strict"; 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;