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