docs: def acquire(self, blocking=True):
          """decrement the counter, waiting if it is already at 0
  
          .. note::
  
              if the counter is already at 0, this method will block the current
              coroutine until a :meth:`release` increments it again.
  
          :param blocking:
              whether or not to block if the counter is already at 0 (default
              ``True``)
          :type blocking: bool
  
          :returns:
              a bool, indicating whether the count was decremented (this can only
              be ``False`` if ``blocking`` was ``False`` -- otherwise it would
              have blocked until it could decrement the counter)
          """
          if self._value:
              self._value -= 1
              return True
          if not blocking:
              return False
          self._waiters.append(compat.getcurrent())
          scheduler.state.mainloop.switch()
          return True