code: def begin_call(self, method, *args):
          
          d = Deferred(self.loop)
          d.request = self.request_num
          self.requests[self.request_num] = d
          self.protocol.send_request(d.request, method, args)
          self.request_num += 1
          return d
docs: Perform an asynchronous remote call where the return value is not known yet.
  
          This returns immediately with a Deferred object. The Deferred object may then be
          used to attach a callback, force waiting for the call, or check for exceptions.