Hairpin.go: def of bend-kit-hairpin@0.14.0.0 Import: import bend-kit-hairpin@0.14.0.0/hairpin.bend as Hairpin Lines 393-410 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=393&end_line=410 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 # left: attempts this layer may still make. n: attempts made so far. Each turn follows the plan of the last step. def go(~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), left: Nat, +n: Nat, +o: Opts, +call: Call, +idem: Bool, s: Step) -> IO(Step): match left: case 0n: IO.pure(Step, s) case 1n+rest: Step{pool, jar, br, b, body, last, plan} = s match plan: case Retry.PlanStop{}: IO.pure(Step, Step{pool, jar, br, b, body, last, Retry.PlanStop{}}) case Retry.PlanWait{ms}: do IO>: pause(ms) next : Step <- attempt(~R, ~judge, ~try, ~close, o, call, idem, n, Step{pool, jar, br, b, body, last, Retry.PlanStop{}}) go(~R, ~judge, ~try, ~close, rest, 1n+n, o, call, idem, next) Uses (20): 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=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-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=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 https://jend.leeeet.dev/definition.txt?path=bend-kit-hairpin@0.14.0.0/hairpin.bend&name=pause 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=Plan