docs: def draw(self, label, expire):
          """
          Return a Serial number for this resource queue, after bootstrapping.
          """
          # get next number
          with self.client.pipeline() as pipe:
              pipe.msetnx({self.keys.dispenser: 0, self.keys.indicator: 1})
              pipe.incr(self.keys.dispenser)
              number = pipe.execute()[-1]
  
          # publish for humans
          self.message('{} assigned to "{}"'.format(number, label))
  
          # launch keeper
          kwargs = {'client': self.client, 'key': self.keys.key(number)}
          keeper = Keeper(label=label, expire=expire, **kwargs)
  
          try:
              yield number
          except:
              self.message('{} crashed!'.format(number))
              raise
          finally:
              keeper.close()
  
          self.message('{} completed by "{}"'.format(number, label))
          number += 1
          self.client.set(self.keys.indicator, number)
          self.announce(number)