code: func (b *Broker) nextTask(queue string) (result []byte, err error) {
  	conn := b.open()
  	defer conn.Close()
  
  	items, err := redis.ByteSlices(conn.Do("BLPOP", queue, 1000))
  	if err != nil {
  		return []byte{}, err
  	}
  
  	// items[0] - the name of the key where an element was popped
  	// items[1] - the value of the popped element
  	if len(items) != 2 {
  		return []byte{}, redis.ErrNil
  	}
  
  	result = items[1]
  
  	return result, nil
  }
docs: // nextTask pops next available task from the default queue