code: private <T> void requestAsync(ClientRequest<T> delegate,
                                    NonblockingStoreCallback callback,
                                    long timeoutMs,
                                    String operationName) {
          pool.submitAsync(this.destination, delegate, callback, timeoutMs, operationName);
      }
docs: This method handles submitting and then waiting for the request from the
  server. It uses the ClientRequest API to actually write the request and
  then read back the response. This implementation will not block for a
  response from the server.
  
  @param <T> Return type
  
  @param clientRequest ClientRequest implementation used to write the
  request and read the response
  @param operationName Simple string representing the type of request
  
  @return Data returned by the individual requests