async queueTask(task) {
		this.#queue.push(task);
		this.#execNext();
		return new Promise((resolve, reject) => {
			const listener = (t, result, error) => {
				if (t !== task) return;

				this.#listeners = this.#listeners.filter((l) => l !== listener);

				if (error) reject(error);
				else resolve(result);
			};

			this.#listeners.push(listener);
		});
	}
Add task to queue
@param {()=>Promise} task