constructor(available) {
		this.available = available;
		/** @type {(() => void)[]} */
		this.waiters = [];
		/** @private */
		this._continue = this._continue.bind(this);
	}
Creates an instance of Semaphore.
@param {number} available the amount available number of "tasks"
in the Semaphore