docs: def pop(self, key=util_const.NoParam, default=util_const.NoParam):
          """
          Pop the next item off the queue
          """
          # Dictionary pop if key is specified
          if key is not util_const.NoParam:
              if default is util_const.NoParam:
                  return (key, self._dict.pop(key))
              else:
                  return (key, self._dict.pop(key, default))
          # Otherwise do a heap pop
          try:
              # Ammortized O(1)
              _heap = self._heap
              _dict = self._dict
              val, key = self._heappop(_heap)
              # Remove items marked for lazy deletion as they are encountered
              while key not in _dict or _dict[key] != val:
                  val, key = self._heappop(_heap)
          except IndexError:
              if len(_heap) == 0:
                  raise IndexError('queue is empty')
              else:
                  raise
          del _dict[key]
          return key, val