def outcome

bend-kit-hairpin@0.14.0.0 · hairpin.bend:169

import bend-kit-hairpin@0.14.0.0/hairpin.bend as Hairpin
import Base
import bend-kit-http@0.38.1.1/http.bend as Http
import bend-kit-time@0.3.0.0/time.bend as Time
import bend-kit-retry@0.3.0.0/retry.bend as Retry

169# Ok is Settled, Caller is Rejected, and Target is Failed. Again is Transient for an idempotent request, else Unsafe.
170def outcome(+idem: Bool, v: Verdict, now: Time.Instant) -> Retry.Outcome:
171  match v:
172    case VerdictOk{}:
173      Retry.Settled{}
174    case VerdictCaller{}:
175      Retry.Rejected{}
176    case VerdictTarget{}:
177      Retry.Failed{}
178    case VerdictAgain{+after}:
179      Bool.pick(Retry.Outcome, idem, Retry.Transient{hint.ms(Http.retry.after(after, now))}, Retry.Unsafe{})

Uses (7)

Used by (1)