code: protected <T> Request doInvoke(ResponseReader responseReader,
        String methodName, RpcStatsContext statsContext, String requestData,
        AsyncCallback<T> callback) {
  
      RequestBuilder rb = doPrepareRequestBuilderImpl(responseReader, methodName,
          statsContext, requestData, callback);
  
      try {
        return rb.send();
      } catch (RequestException ex) {
          InvocationException iex = new InvocationException(
              "Unable to initiate the asynchronous service invocation (" +
              methodName + ") -- check the network connection",
              ex);
        callback.onFailure(iex);
      } finally {
        if (statsContext.isStatsAvailable()) {
          statsContext.stats(statsContext.bytesStat(methodName,
              requestData.length(), "requestSent"));
        }
      }
      return null;
    }
docs: Performs a remote service method invocation. This method is called by
  generated proxy classes.
  
  @param <T> return type for the AsyncCallback
  @param responseReader instance used to read the return value of the
  invocation
  @param requestData payload that encodes the addressing and arguments of the
  RPC call
  @param callback callback handler
  
  @return a {@link Request} object that can be used to track the request