code: @Override
      public ClientResponse get() throws InterruptedException, ExecutionException {
          try {
              return get(this.timeout, TimeUnit.MILLISECONDS);
          } catch (TimeoutException to) {
              this.status.compareAndSet(STATUS_RUNNING, STATUS_TIMEOUT);
              throw new ExecutionException(to);
          }
      }
docs: Waits if necessary for the computation to complete, and then retrieves its result.
  
  @return the computed result.
  @throws CancellationException
  if the computation was cancelled.
  @throws ExecutionException
  if the computation threw an exception.
  @throws InterruptedException
  if the current thread was interrupted while waiting.