diff --git a/network/health/tracker.go b/network/health/tracker.go
index 31f9034202a4533cb4064b6cc526111ca375b457..7e1c6141d0a35600595f377a5a1fcf1caaf1f0c4 100644
--- a/network/health/tracker.go
+++ b/network/health/tracker.go
@@ -123,21 +123,21 @@ func (t *Tracker) start(quitCh <-chan struct{}) {
 			break
 		case heartbeat = <-t.heartbeat:
 			jww.INFO.Printf("heartbeat: %v", heartbeat)
-			// Stop and reset timer
-			if !timer.Stop() {
-				select {
-				case <-timer.C: // per docs explicitly drain
-				default:
-				}
-			}
-			timer.Reset(t.timeout)
 			if healthy(heartbeat) {
+				// Stop and reset timer
+				if !timer.Stop() {
+					select {
+					// per docs explicitly drain
+					case <-timer.C:
+					default:
+					}
+				}
+				timer.Reset(t.timeout)
 				t.setHealth(true)
 			}
 			break
 		case <-timer.C:
 			t.setHealth(false)
-			timer.Reset(t.timeout)
 			break
 		}
 	}