@Override
    public void callMethod(Descriptors.MethodDescriptor md, RpcController controller, Message param,
      Message returnType, RpcCallback<Message> done) {
      HBaseRpcController configuredController = configureRpcController(
        Preconditions.checkNotNull(controller, "RpcController can not be null for async rpc call"));
      // This method does not throw any exceptions, so the caller must provide a
      // HBaseRpcController which is used to pass the exceptions.
      this.rpcClient.callMethod(md, configuredController, param, returnType, ticket, addr, done);
    }
Async rpc channel that goes via hbase rpc.
hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java