retry<F> function

Future<F> retry<F>(
  1. Future<F> future(), {
  2. int maxCount = 5,
  3. Duration delay = Duration.zero,
})

Implementation

Future<F> retry<F>(
  Future<F> Function() future, {
  int maxCount = 5,
  Duration delay = Duration.zero,
}) async {
  try {
    return await future();
  } catch (e) {
    if (maxCount > 1) {
      return Future.delayed(delay).then(
        (value) => retry(
          future,
          maxCount: maxCount - 1,
          delay: delay,
        ),
      );
    } else {
      rethrow;
    }
  }
}