build method
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);
};
}