public Observable call()

in src/main/java/com/spotify/ffwd/http/RetryWithDelay.java [44:59]


  public Observable<?> call(Observable<? extends Throwable> attempts) {
    return attempts.flatMap(new Func1<Throwable, Observable<?>>() {
      @Override
      public Observable<?> call(Throwable throwable) {
        if (++retryCount < maxRetries) {
          final long retryMillis = retryDelayMillis;
          final long jitter = (long)(random.nextFloat() * retryMillis);

          retryDelayMillis = Math.min(retryDelayMillis * 2, maxDelayMillis);
          return Observable.timer(retryMillis + jitter, TimeUnit.MILLISECONDS);
        }
        // Max retries hit. Just pass the error along.
        return Observable.error(throwable);
      }
    });
  }