docs: @Override
      public ClientResponse get(long timeout, TimeUnit unit) throws InterruptedException,
              ExecutionException, TimeoutException {
          if (!this.latch.await(timeout, unit)) {
              this.status.compareAndSet(STATUS_RUNNING, STATUS_TIMEOUT);
              throw new TimeoutException();
          }
          if (isCancelled()) {
              throw new CancellationException();
          } else if (this.response.getStatus() != ClientResponse.SUCCESS) {
              this.status.compareAndSet(STATUS_RUNNING, STATUS_FAILURE);
              throw new ExecutionException(new Exception(response.getStatusString()));
          } else {
              this.status.compareAndSet(STATUS_RUNNING, STATUS_SUCCESS);
              return this.response;
          }
      }