in packages/sqrl/src/jslib/Semaphore.ts [87:103]
decrement() {
// If something is waiting for this, just pass the
if (
this._resolvers.length &&
(this.max === null || this.count <= this.max)
) {
const resolver = this._resolvers.shift();
resolver();
return;
}
this.count--;
this.emit("change", this.count);
if (this.count === 0 && this._zeroPromiseResolver) {
this._zeroPromiseResolver.resolve();
this._zeroPromiseResolver = null;
}
}