code: public <E extends Exception> void doUntilSuccess(final ExceptionalSupplier<Boolean, E> task)
        throws InterruptedException, BackoffStoppedException, E {
      doUntilResult(new ExceptionalSupplier<Boolean, E>() {
        @Override public Boolean get() throws E {
          Boolean result = task.get();
          return Boolean.TRUE.equals(result) ? result : null;
        }
      });
    }
docs: Executes the given task using the configured backoff strategy until the task succeeds as
  indicated by returning {@code true}.
  
  @param task the retryable task to execute until success
  @throws InterruptedException if interrupted while waiting for the task to execute successfully
  @throws BackoffStoppedException if the backoff stopped unsuccessfully
  @throws E if the task throws