build method

FetchStrategy build()

Builds the FetchStrategy.

Implementation

FetchStrategy build() {
  return (uri, failure) async {
    final attempt = failure?.attempt ?? 0;
    if (attempt >= maxTries) return null;

    final statusCode = failure?.httpStatusCode;
    if (statusCode != null && !transientHttpStatusCodePredicate(statusCode)) {
      return null;
    }

    var pauseMs = initialPause.inMilliseconds.toDouble();
    for (var i = 1; i < attempt; i++) {
      pauseMs *= backOffFactor;
    }
    if (jitter > 0) {
      pauseMs += pauseMs * jitter * (2.0 * pseudoRandom() - 1.0);
    }
    final pause = Duration(
      milliseconds: pauseMs
          .clamp(0, maxPause.inMilliseconds.toDouble())
          .round(),
    );
    return FetchInstructions(waitFor: pause);
  };
}