func()

in dialer.go [267:294]


func (s *SentinelDialer) doUntilSuccess(fn func(conn redis.Conn) (interface{}, error)) (result interface{}, err error) {
	var cnx redis.Conn

	for _, addr := range s.sentinels {
		options := []redis.DialOption{
			redis.DialConnectTimeout(s.timeout),
			redis.DialUseTLS(s.useTLS),
		}

		if s.sentinelPassword != "" {
			options = append(options, redis.DialPassword(s.sentinelPassword))
		}
		cnx, err = redis.Dial(s.network, addr, options...)
		if err != nil {
			continue
		}

		result, err = fn(cnx)
		if err != nil {
			cnx.Close()
			continue
		}

		return result, nil
	}

	return nil, err
}