'Call remote XML-RPC C{method} with given arguments.
@return: a L{defer.Deferred} that will fire with the method response,
or a failure if the method failed. Generally, the failure type will
be L{Fault}, but you can also have an C{IndexError} on some buggy
servers giving empty responses.
If the deferred is cancelled before the request completes, the
connection is closed and the deferred will fire with a
L{defer.CancelledError}.'

def callRemote(self, method, *args):

    def cancel(d):
        factory.deferred = None
        connector.disconnect()
    factory = self.queryFactory(self.path, self.host, method, self.user, self.password, self.allowNone, args, cancel, self.useDateTime)
    if self.secure:
        from twisted.internet import ssl
        connector = self._reactor.connectSSL(nativeString(self.host), (self.port or 443), factory, ssl.ClientContextFactory(), timeout=self.connectTimeout)
    else:
        connector = self._reactor.connectTCP(nativeString(self.host), (self.port or 80), factory, timeout=self.connectTimeout)
    return factory.deferred
