diff --git a/state.go b/state.go
index <HASH>..<HASH> 100644
--- a/state.go
+++ b/state.go
@@ -444,7 +444,11 @@ func (m *Memberlist) suspectNode(s *suspect) {
 	// Setup a timeout for this
 	timeout := suspicionTimeout(m.config.SuspicionMult, len(m.nodes), m.config.ProbeInterval)
 	time.AfterFunc(timeout, func() {
-		if state.State == StateSuspect && state.StateChange == changeTime {
+		m.nodeLock.Lock()
+		state, ok := m.nodeMap[s.Node]
+		m.nodeLock.Unlock()
+
+		if ok && state.State == StateSuspect && state.StateChange == changeTime {
 			m.suspectTimeout(state)
 		}
 	})
Make the suspicion timer a bit more robust