diff --git a/ring.go b/ring.go
index <HASH>..<HASH> 100644
--- a/ring.go
+++ b/ring.go
@@ -203,7 +203,7 @@ func (ring *Ring) heartbeat() {
 
 		for _, shard := range ring.shards {
 			err := shard.Client.Ping().Err()
-			if shard.Vote(err == nil) {
+			if shard.Vote(err == nil || err == errPoolTimeout) {
 				log.Printf("redis: ring shard state changed: %s", shard)
 				rebalance = true
 			}
ring: ignore pool timeout when pinging shards.