HttpRequestSchedule

A plugin that enables the client to retry failed requests according to arrow.resilience.Schedule. The default retry policy is 3 retries with exponential jitter'ed delay.

Typical usages which shows the default configuration:

// use predefined retry policies
install(HttpRequestSchedule) {
fun <A> delay() = Schedule.exponential<A>(2.seconds).jittered()

repeat(delay<HttpResponse>.doWhile { request, duration -> request.status.value in 500..599 })
retry(delay<Throwable>().and(Schedule.recurs(3)))
}

// use custom policies
install(HttpRequestSchedule) {
fun <A> delay() = Schedule.spaced<A>(3.seconds)

retry(delay<Throwable>().doWhile { exception, _ -> exception is NetworkError })
repeat(delay<HttpRequest>().doWhile { request, _ -> !response.status.isSuccess() })
modifyRequest { it.headers.append("X_RETRY_COUNT", retryCount.toString()) }
}