Hairpin.attempt.gate: def of bend-kit-hairpin@0.14.0.0 Import: import bend-kit-hairpin@0.14.0.0/hairpin.bend as Hairpin Lines 360-373 of bend-kit-hairpin@0.14.0.0/hairpin.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&start_line=360&end_line=373 import Base import bend-kit-http@0.38.1.1/http.bend as Http import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes import bend-kit-retry@0.3.0.0/retry.bend as Retry # A refused stream closes only when the next attempt is admitted, so a denied attempt still returns it. def attempt.gate(~R: Type, ~judge: Result<&1, &1, Http.Err, R> -> Result<&1, &1, Http.Err, R> & Verdict, ~try: Opts -> Call -> Http.Pool -> Maybe<&2, Http.Jar> -> Bytes.Bytes -> IO(Http.Pool & Maybe<&2, Http.Jar> & Result<&1, &1, Http.Err, R>), ~close: R -> IO(Unit), x: Retry.Breaker & Retry.Budget & Retry.Gate, +o: Opts, +call: Call, +idem: Bool, +n: Nat, pool: Http.Pool, jar: Maybe<&2, Http.Jar>, body: Bytes.Bytes, last: Maybe<&1, Result<&1, &1, Err, R>>) -> IO(Step): (br, b, g) = x match g: case Retry.GateNo{why}: IO.pure(Step, Step{pool, jar, br, b, body, denied(R, why, last), Retry.PlanStop{}}) case Retry.GateGo{}: do IO>: close.last(~R, ~close, last) attempt.run(~R, ~judge, ~try, o, call, idem, n, pool, jar, br, b, Bytes.slice(body, 0, 4294967295)) Uses (27): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.bind https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.pure https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Result https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Unit https://jend.leeeet.dev/definition.txt?path=bend-kit-bytes@0.3.3.0/bytes.bend&name=Bytes https://jend.leeeet.dev/definition.txt?path=bend-kit-bytes@0.3.3.0/bytes.bend&name=slice https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=Call https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=Err https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=Opts https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=Step https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=Verdict https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=attempt.run https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=close.last https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=denied https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Err https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Jar https://jend.leeeet.dev/definition.txt?path=bend-kit-http@0.38.4.0/http.bend&name=Pool https://jend.leeeet.dev/definition.txt?path=bend-kit-retry@0.3.0.0/retry.bend&name=Breaker https://jend.leeeet.dev/definition.txt?path=bend-kit-retry@0.3.0.0/retry.bend&name=Budget https://jend.leeeet.dev/definition.txt?path=bend-kit-retry@0.3.0.0/retry.bend&name=Gate https://jend.leeeet.dev/definition.txt?path=bend-kit-retry@0.3.0.0/retry.bend&name=Plan