2026-10-03T23:45:42.748Z - Node v24.21.0
122 passed, 25 failed, 0 skipped, 0 not run; 0 cells have no implemented test; 84 N/A.
N/A means this combination is unavailable; each cell explains why. NOT TESTED means unimplemented; NOT RUN means a registered case was absent from this run. Cells link to configurations, expected behavior, and failure details.
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; maxAttempts=retries+1; circuit outside hedge
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; two 503 responses then 200; 2 retries; delay 20ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: 200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms
Expected: Exact HttpError; cause is a 503 Response with the original body; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms
Expected: Exact HTTPError; response.status is 503; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms
Expected: Return the final 503 Response with the original body; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms
Expected: Exact FetchError; status is 503; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact WretchError constructor; status 503; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact HttpError; cause responseStatus; details.status 503; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact HttpError; status 503 and original error body; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; maxAttempts=retries+1; circuit outside hedge
Expected: Exact RetryExceededError; ERR_RETRY_EXCEEDED; attempts and identical cause/lastError; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms
Expected: Return the final 503 Response with the original body; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact RetryExhaustedError with attempts and HttpStatusError cause carrying response.status 503; with zero retries, exact underlying HttpStatusError; exactly 3 attempts; no transport timers
Configuration: GET; three 503 responses; 2 retries; delay 20ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Exact Error constructor and HTTP 503 message from createCircuitFetch; exactly 3 attempts; no transport timers
Configuration: GET; one 503; 0 retries
Expected: Exact HttpError; cause is a 503 Response with the original body; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries
Expected: Exact HTTPError; response.status is 503; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries
Expected: Return the final 503 Response with the original body; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries
Expected: Exact FetchError; status is 503; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact WretchError constructor; status 503; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact HttpError; cause responseStatus; details.status 503; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact HttpError; status 503 and original error body; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; maxAttempts=retries+1; circuit outside hedge
Expected: Exact RetryExceededError; ERR_RETRY_EXCEEDED; attempts and identical cause/lastError; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries
Expected: Return the final 503 Response with the original body; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact RetryExhaustedError with attempts and HttpStatusError cause carrying response.status 503; with zero retries, exact underlying HttpStatusError; exactly 1 attempts; no transport timers
Configuration: GET; one 503; 0 retries; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Exact Error constructor and HTTP 503 message from createCircuitFetch; exactly 1 attempts; no transport timers
Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up
Expected: Exact AbortError; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after cancellation: expected 3 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 4 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up
Expected: Exact FetchError with caller abort reason as cause; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 3 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 3 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 3 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; maxAttempts=retries+1; circuit outside hedge
Expected: Exact DOMException, identical caller abort reason forwarded by the fetch adapter; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Cancellation must settle during backoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after cancellation: expected 3 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 4 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: 2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Exact CircuitAbortedError, CIRCUIT_ABORTED; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement
Expected: Exact AbortError; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
Configuration: Not applicable
Expected: No bulkhead queue is offered by this package.
Configuration: Not applicable
Expected: No bulkhead queue is offered by this package.
Configuration: Not applicable
Expected: No bulkhead queue is offered by this package.
Configuration: Not applicable
Expected: No bulkhead queue is offered by this package.
Configuration: Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 1 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:75:32
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No bulkhead queue is offered by this package.
Configuration: Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; maxAttempts=retries+1; circuit outside hedge
Expected: Exact DOMException, identical caller abort reason forwarded by the fetch adapter; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected 1 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:75:32
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected [ …(2) ] to not include 'https://example.test/resource/cancell…'
at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:2077:15)
at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:1944:14)
at Proxy.methodWrapper (file:///home/runner/work/http-resilience/http-resilience/node_modules/chai/index.js:1737:25)
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:77:24
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work
AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected [ …(2) ] to not include 'https://example.test/resource/cancell…'
at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:2077:15)
at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:1944:14)
at Proxy.methodWrapper (file:///home/runner/work/http-resilience/http-resilience/node_modules/chai/index.js:1737:25)
at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:77:24
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: Capacity rejects immediately; no queued bulkhead is offered.
Configuration: Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms
Expected: Body winner readable to EOF; primary cancelled; exactly 2 attempts; no active attempts, bodies or transport timers
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms; maxAttempts=retries+1; circuit outside hedge
Expected: Body winner readable to EOF; primary cancelled; exactly 2 attempts; no active attempts, bodies or transport timers
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Body winner readable to EOF; loser result discarded as documented; caller abort cleans up the hanging loser; exactly 2 attempts; no remaining transport work
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure
Expected: Winner and next request succeed; threshold-crossing POST and subsequent refusal throw exact CircuitOpenError; exactly 4 attempts
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure; maxAttempts=retries+1; circuit outside hedge; POST hedges too; failed POST uses 2 attempts; same circuit instance throughout
Expected: Winner and follow-up succeed; hedged POST failure throws exact Error with message No acceptable hedged result completed.; next call exact CircuitOpenError; 5 transport attempts
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Winner and next request succeed; deliberate failure follows HTTP contract; next call throws exact CircuitOpenError; exactly 4 attempts
Configuration: Not applicable
Expected: No hedging policy is offered by this package.
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; maxAttempts=retries+1; circuit outside hedge
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; 2 retries; delay 5ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: 200; body ready; exactly 3 server arrivals
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries
Expected: Exact TimeoutError; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries
Expected: Exact TimeoutError; healthy follow-up succeeds
Configuration: Not applicable
Expected: No timeout policy is offered; native fetch alone does not supply this deadline.
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries
Expected: Exact FetchError; exact Error cause named TimeoutError with code 23; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact DOMException named AbortError from AbortAddon.setTimeout; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact Cockatiel TaskCancelledError identifying timeout; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact TimeoutError with timeout 100; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; maxAttempts=retries+1; circuit outside hedge
Expected: Exact RetryExceededError (1 attempt); cause is exact TimeoutError, ERR_TIMEOUT, timeoutMs 100; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries
Expected: Exact TimeoutError; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact TimeoutError; healthy follow-up succeeds
Configuration: Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Exact CircuitTimeoutError, CIRCUIT_TIMEOUT, timeoutMs 100; healthy follow-up succeeds
Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
Configuration: Not applicable
Expected: No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.
Configuration: Not applicable
Expected: No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.
Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
AssertionError: Deadline must cover backoff and subsequent attempts: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:24:86
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.
Configuration: Not applicable
Expected: No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.
Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cooperative work must stop: expected 1 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:34:73
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up
AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Cooperative work must stop: expected 1 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:34:73
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; maxAttempts=retries+1; circuit outside hedge
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty
Configuration: 503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms
Expected: Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers
Configuration: 503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms
Expected: Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers
Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: 503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers
AssertionError: Abort must interrupt header-derived wait: 1: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: Thu, 01 Jan 1970 00:00:01 GMT: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: bad: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: 1000: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: 503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers
Configuration: 503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; maxAttempts=retries+1; circuit outside hedge
Expected: Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers
AssertionError: Retry-After must control retry timing: 1: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: 1: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Retry-After must control retry timing: Thu, 01 Jan 1970 00:00:01 GMT: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: Thu, 01 Jan 1970 00:00:01 GMT: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: bad: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Retry-After must control retry timing: 1000: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: Abort must interrupt header-derived wait: 1000: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: Not applicable
Expected: No Retry-After handling is offered by this package.
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
AssertionError: callback: callback rejection must settle the caller: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-hook-error.test.ts:19:92
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: async-callback: callback rejection must settle the caller: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-hook-error.test.ts:19:92
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No configurable retry predicate, delay function or retry callback is exposed.
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; maxAttempts=retries+1; circuit outside hedge
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: Not applicable
Expected: No configurable retry predicate, delay function or retry callback is exposed.
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: 503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up
Configuration: Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries
Expected: Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries; maxAttempts=retries+1; circuit outside hedge
Expected: Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up
Expected: Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up; maxAttempts=retries+1; circuit outside hedge
Expected: Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers
Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers
AssertionError: No late hedge at deadline 5: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:32:79
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:35:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: All cooperative branches must stop: expected 1 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: No late hedge at deadline 10: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:32:79
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:35:82
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: All cooperative branches must stop: expected 1 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: All cooperative branches must stop: expected 2 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: All cooperative branches must stop: expected 2 to be +0 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No hedging policy is offered.
Configuration: 4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up
Expected: Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: 4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: 4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once
Configuration: 4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; maxAttempts=retries+1; circuit outside hedge
Expected: Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once
AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }
at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }
at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }
at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up
Expected: Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget
Expected: Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works
Configuration: Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; maxAttempts=retries+1; circuit outside hedge
Expected: Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Not applicable
Expected: No request deduplication policy/helper is offered.
Configuration: Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C
Expected: Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; maxAttempts=retries+1; circuit outside hedge
Expected: Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity
Configuration: Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C
Expected: Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity
Configuration: Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity
Configuration: Not applicable
Expected: No queued bulkhead is exposed; immediate capacity rejection is a different contract.
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; maxAttempts=retries+1; circuit outside hedge
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
AssertionError: late success must not close the newer open state: expected false to be true // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:129:59
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
AssertionError: late success must not admit during the new cooldown: expected true to be false // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:132:93
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: late success must not consume the recovery response: expected 4 to be 3 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:134:88
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; maxAttempts=retries+1; circuit outside hedge
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
Configuration: Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.
AssertionError: admit at the exact reset deadline: expected 1 to be 2 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:56:72
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: new cooldown expires at its deadline: expected 2 to be 3 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:87:75
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: stale variant reset boundary: expected 2 to be 3 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:117:65
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: late success must not admit during the new cooldown: expected true to be false // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:132:93
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: late success must not consume the recovery response: expected 4 to be 3 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:134:88
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Not applicable
Expected: No circuit breaker policy/helper is offered.
Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; published backoff with initial/max delay configured; deterministic Math.random=0.5
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
AssertionError: backoff cancellation must settle promptly: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: no dispatch after backoff cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:71:84
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; original parsed SmartFetchResponse result; normal timeout 60000ms
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; maxAttempts=retries+1; circuit outside hedge
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
AssertionError: backoff cancellation must settle promptly: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
AssertionError: backoff cancellation must settle promptly: expected undefined to be defined
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20AssertionError: no dispatch after backoff cancellation: expected 2 to be 1 // Object.is equality
at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:71:84
at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.
Configuration: Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests
Expected: Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.