code: def wrapped_request(self, request, *args, **kwargs):
          
          f = tornado_Future()
          try:
              use_mid = kwargs.get('use_mid')
              timeout = kwargs.get('timeout')
              mid = kwargs.get('mid')
              msg = Message.request(request, *args, mid=mid)
          except Exception:
              f.set_exc_info(sys.exc_info())
              return f
          return transform_future(self.reply_wrapper,
                                  self.katcp_client.future_request(msg, timeout, use_mid))
docs: Create and send a request to the server.
  
          This method implements a very small subset of the options
          possible to send an request. It is provided as a shortcut to
          sending a simple wrapped request.
  
          Parameters
          ----------
          request : str
              The request to call.
          *args : list of objects
              Arguments to pass on to the request.
  
          Keyword Arguments
          -----------------
          timeout : float or None, optional
              Timeout after this amount of seconds (keyword argument).
          mid : None or int, optional
              Message identifier to use for the request message. If None, use either
              auto-incrementing value or no mid depending on the KATCP protocol version
              (mid's were only introduced with KATCP v5) and the value of the `use_mid`
              argument. Defaults to None.
          use_mid : bool
              Use a mid for the request if True.
  
          Returns
          -------
          future object that resolves with the
          :meth:`katcp.client.DeviceClient.future_request` response wrapped in
          self.reply_wrapper
  
          Example
          -------
  
          ::
  
          wrapped_reply = yield ic.simple_request('help', 'sensor-list')