code: def send(self, message):
          
          assert self._handshake_performed, "Perform a handshake first."
          assert message.message_type in self.CALL_REQ_TYPES, (
              "Message '%s' can't use send" % repr(message)
          )
  
          message.id = message.id or self.writer.next_message_id()
          assert message.id not in self._outbound_pending_call, (
              "Message ID '%d' already being used" % message.id
          )
  
          future = tornado.gen.Future()
          self._outbound_pending_call[message.id] = future
          self.write(message)
          return future
docs: Send the given message up the wire.
          Use this for messages which have a response message.
  
          :param message:
              Message to send
          :returns:
              A Future containing the response for the message