code: func (p *Pool) respondToPings() error {
  	pong := redisPool.Get()
  	ping := redis.PubSubConn{redisPool.Get()}
  	defer func() {
  		pong.Close()
  		ping.Close()
  	}()
  	// Subscribe to the ping key for this pool to receive pings.
  	if err := ping.Subscribe(p.pingKey()); err != nil {
  		return err
  	}
  	for {
  		// Whenever we recieve a ping, reply immediately with a pong by
  		// publishing to the pong key for this pool.
  		switch reply := ping.Receive().(type) {
  		case redis.Message:
  			if _, err := pong.Do("PUBLISH", p.pongKey(), 0); err != nil {
  				return err
  			}
  		case error:
  			err := reply.(error)
  			return err
  		}
  		time.Sleep(1 * time.Millisecond)
  	}
  }
docs: // respondToPings continuously listens for pings from other worker pools and
  // immediately responds with a pong. It will only return if there is an error.