docs: def process(self):
          """Process queue for these listeners. Only the items with type that
          matches """
  
          with self.lock, self.enlock:
              queue = copy(self.queue)
              self.queue.clear()
              callbacks = copy(self.callbacks)
  
          with self.lock:
              rm_cb = False
              for ki, vi in queue.items():
                  if ki in self.callbacks:
                      for item in vi:
                          for cb in self.callbacks[ki]:
                              if cb(item) is False:
                                  callbacks[ki].remove(cb)
                                  if not callbacks[ki]:
                                      del callbacks[ki]
                                  rm_cb = True
  
          with self.lock:
              if rm_cb:
                  self.callbacks.clear()
                  for k, v in callbacks.items():
                      self.callbacks[k].extend(v)
              return len(self.callbacks)