docs: def stop(self, nowait=False):
          """Stop the listener.
  
          This asks the thread to terminate, and then waits for it to do so.
          Note that if you don't call this before your application exits, there
          may be some records still left on the queue, which won't be processed.
          If nowait is False then thread will handle remaining items in queue and
          stop.
          If nowait is True then thread will be stopped even if the queue still
          contains items.
          """
          self._stop.set()
          if nowait:
              self._stop_nowait.set()
          self.queue.put_nowait(self._sentinel_item)
          if (self._thread.isAlive() and
                  self._thread is not threading.currentThread()):
              self._thread.join()
          self._thread = None