def _Get(self):
    cached = self._Dequeue()
    if cached:
      return cached
    elif self._current_size < self._max_size:
      self._current_size += 1
      self._varz.size(self._current_size)
      sink = self._sink_provider.CreateSink(self._properties)
      # TODO: we could get a better failure case here by detecting that Open()
      # failed and retrying, however for now the simplest option is to just fail.
      sink.Open().wait()
      sink.on_faulted.Subscribe(self.__PropagateShutdown)
      return sink
    else:
      if self._max_queue_size > len(self._waiters) + 1:
        return FailingMessageSink(MaxWaitersError())
      else:
        self._varz.queue_size(len(self._waiters) + 1)
        return QueuingMessageSink(self._waiters)
dataset/ETHPy150Open steveniemitz/scales/scales/pool/watermark.py/WatermarkPoolSink._Get/swapped operands of `>`