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
}