docs: def watch_once(self, key, timeout=None, **kwargs):
          """Watch a key and stops after the first event.
  
          :param key: key to watch
          :param timeout: (optional) timeout in seconds.
          :returns: event
          """
          event_queue = queue.Queue()
  
          def callback(event):
              event_queue.put(event)
  
          w = watch.Watcher(self, key, callback, **kwargs)
          try:
              return event_queue.get(timeout=timeout)
          except queue.Empty:
              raise exceptions.WatchTimedOut()
          finally:
              w.stop()