You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Add KeyedBulkhead: the same wait, lease and observer semantics as SharedBulkhead, with the name and limit passed per call (call(name, max, cb), acquire(), tryAcquire(), availableSlots()) — for one limit per proxy, tenant or browser context without dropping to the raw BulkheadStore and a hand-written try/finally (#43).
Add Slot, a held slot as a value with an idempotent release(), returned by the new SharedBulkhead::acquire()/tryAcquire() and their KeyedBulkhead twins: take a slot in one place, release it where the work ends (#43). acquire() waits up to maxWait and throws BulkheadFullException; tryAcquire() never waits and returns null. A throwing onAccepted releases the slot before rethrowing, as in call().
BulkheadFullException now carries waited (time spent waiting) and lease, and retryAfter(): ?Duration returns the lease as an upper bound on when a slot frees — a Retry-After ceiling (#44). Both are new optional constructor parameters; an exception built by hand still works and reports null.
Sleeper\FakeSleeper accepts an optional onSleep closure called after each recorded sleep, so a test can advance a fake clock without its own sleeper (#45, additive part).
CI: tolerate roave's all-SKIPPED BC report, split the mutation path filter, verify the tagged commit before publishing a release.