code: public boolean awaitCompletion(long timeout, TimeUnit timeUnit) throws InterruptedException {
          boolean result = completed.await(timeout, timeUnit);
          throwFirstError();
          return result;
      }
docs: Blocks until {@link ResultCallback#onComplete()} was called or the given timeout occurs
  @return {@code true} if completed and {@code false} if the waiting time elapsed
  before {@link ResultCallback#onComplete()} was called.