docs: def _server_loop(self, client, client_addr):
          """Read requests from one client socket, 'client'."""
          while not self._stopped and not _shutting_down:
              try:
                  with self._unlock():
                      request = mock_server_receive_request(client, self)
  
                  self._requests_count += 1
                  self._log('%d\t%r' % (request.client_port, request))
  
                  # Give most recently added responders precedence.
                  for responder in reversed(self._autoresponders):
                      if responder.handle(request):
                          self._log('\t(autoresponse)')
                          break
                  else:
                      self._request_q.put(request)
              except socket.error as error:
                  if error.errno in (errno.ECONNRESET, errno.EBADF):
                      # We hung up, or the client did.
                      break
                  raise
              except select.error as error:
                  if error.args[0] == errno.EBADF:
                      # Closed.
                      break
                  else:
                      raise
              except AssertionError:
                  traceback.print_exc()
                  break
  
          self._log('disconnected: %s' % format_addr(client_addr))
          client.close()