code: def callRemoteMessage(self, mcall, timeout=None):
          
          assert isinstance(mcall, message.MethodCallMessage)
  
          if mcall.expectReply:
              d = defer.Deferred()
  
              if timeout:
                  timeout = reactor.callLater(
                      timeout, self._onMethodTimeout, mcall.serial, d)
  
              self._pendingCalls[mcall.serial] = (d, timeout)
  
              self.sendMessage(mcall)
  
              return d
          else:
              self.sendMessage(mcall)
  
              return defer.succeed(None)
docs: Uses the specified L{message.MethodCallMessage} to call a remote method
  
          @rtype: L{twisted.internet.defer.Deferred}
          @returns: a Deferred to the result of the remote method call