code: public RestClientResponse execute(AsyncHttpClient.BoundRequestBuilder requestBuilder) throws RestClientException {
      Response response;
  
      try {
        ListenableFuture<Response> futureResponse = requestBuilder.execute();
        response = futureResponse.get();
  
        if (log.isDebugEnabled()) {
          // the if is here so that we don't call the getResponseBody() when we're not going to print it
          log.debug("Got response body: {}", response.getResponseBody());
        }
      } catch (InterruptedException e) {
        throw new RestClientException("Interrupted while waiting for server response", e);
      } catch (ExecutionException e) {
        throw new RestClientException("Tried to retrieve result from aborted action.", e);
      } catch (IOException e) {
        throw new RestClientException("Encountered IOException while executing REST request.", e);
      }
  
      return new NingRestClientResponse(response);
    }
docs: Execute and throw RestClientException exceptions if the request could not be executed.
  
  @param requestBuilder the request to be executed()
  @return return the response fetched from the server
  @throws RestClientException if the response could not be fetched