acquire(callback) {
		if (this.available > 0) {
			this.available--;
			callback();
		} else {
			this.waiters.push(callback);
		}
	}
@param {() => void} callback function block to capture and run
@returns {void}