docs: def data_received(self, data):
          """Process received data from the socket
  
          Called when we receive data
          """
          self.logger.debug('Received data: %s', repr(data))
  
          try:
              request = self._parse_headers(data)
              self._handle_request(request)
          except InvalidRequestError as e:
              self._write_response(e.get_http_response())
  
          if not self.keepalive:
              if self._timeout_handle:
                  self._timeout_handle.cancel()
              self.transport.close()
  
          if self._timeout and self._timeout_handle:
              self.logger.debug('Delaying timeout event')
              self._timeout_handle.cancel()
              self._timout_handle = self._loop.call_later(
                  self._timeout, self._handle_timeout)