code: def request_io(self, iocb):
          
          if _debug: IOQController._debug("request_io %r", iocb)
  
          # bind the iocb to this controller
          iocb.ioController = self
  
          # if we're busy, queue it
          if (self.state != CTRL_IDLE):
              if _debug: IOQController._debug("    - busy, request queued, active_iocb: %r", self.active_iocb)
  
              iocb.ioState = PENDING
              self.ioQueue.put(iocb)
              return
  
          try:
              # hopefully there won't be an error
              err = None
  
              # let derived class figure out how to process this
              self.process_io(iocb)
          except:
              # extract the error
              err = sys.exc_info()[1]
              if _debug: IOQController._debug("    - process_io() exception: %r", err)
  
          # if there was an error, abort the request
          if err:
              if _debug: IOQController._debug("    - aborting")
              self.abort_io(iocb, err)
docs: Called by a client to start processing a request.