code: public synchronized long exponentialWait() {
          long maxDelayRet = minDelay + ((maxDelay - minDelay) / maxFailureCount) * currentFailureCount;
          return (long) (random.nextFloat() * maxDelayRet);
      }
docs: Calculating wait duration after failure attempt
  
  @return wait in ms