'Make an RPC call.
Internal only.
Except for the added config argument, this is a thin wrapper
around UserRPC.make_call().
Args:
config: A Configuration object or None.  Defaults are taken from
the connection\'s default configuration.
method: The method name.
request: The request protocol buffer.
response: The response protocol buffer.
get_result_hook: Optional get-result hook function.  If not None,
this must be a function with exactly one argument, the RPC
object (self).  Its return value is returned from get_result().
user_data: Optional additional arbitrary data for the get-result
hook function.  This can be accessed as rpc.user_data.  The
type of this value is up to the service module.
Returns:
The UserRPC object used for the call.'

def _make_rpc_call(self, config, method, request, response, get_result_hook=None, user_data=None, service_name=None):

    if isinstance(config, apiproxy_stub_map.UserRPC):
        rpc = config
    else:
        rpc = self._create_rpc(config, service_name)
    rpc.make_call(method, request, response, get_result_hook, user_data)
    self._add_pending(rpc)
    return rpc
