def retry.go
bend-kit-http@0.38.5.0 · http.bend:4584
import bend-kit-http@0.38.5.0/http.bend as Http
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
4584
4585def retry.go(left: Nat, +n: Nat, +idem: Bool, +method: String, +url: String,
4586 +headers: Map<&2, List<&2, String>>,
4587 t: Bytes.Bytes & Result<&1, &1, Err, Res> & Maybe<&2, String>) -> IO(Result<&1, &1, Err, Res>):
4588 match left:
4589 case 0n:
4590 (body, r, m) = t
4591 IO.pure(Result<&1, &1, Err, Res>, r)
4592 case 1n+p:
4593 (body, r, m) = t
4594 match m:
4595 case None{}:
4596 IO.pure(Result<&1, &1, Err, Res>, r)
4597 case Some{v}:
4598 do IO<Result<&1, &1, Err, Res>>:
4599 retry.sleep(v, n)
4600 tried : Bytes.Bytes & Result<&1, &1, Err, Res> & Maybe<&2, String> <-
4601 retry.one(idem, method, url, headers, Bytes.slice(body, 0, 4294967295))
4602 retry.go(p, 1n+n, idem, method, url, headers, tried)