docs: def add_listener(self, event_type, callback):
          """Add a listener for specific event type.
          You'll need to actually listen for changes using the listen method"""
  
          if not self.connected:
              # wait for errors set by reraise method
              time.sleep(1)
              if self.exception:
                  # pylint: disable=raising-bad-type
                  raise self.exception
              raise ConnectionError(f"{self.room} is not connected")
  
          thread = get_thread_ident()
          with self.lock:
              listener = self.listeners[thread]
          listener.add(event_type, callback)
          # use "initial_files" event to listen for whole filelist on room join
          self.process_queues()