···133133 }
134134 }
135135136136- // Mark as in-flight and create done channel if needed
137137- if entry.done == nil {
138138- entry.done = make(chan struct{})
139139- }
136136+ // Mark as in-flight and create fresh done channel for this fetch
137137+ // IMPORTANT: Always create a new channel - a closed channel is not nil
138138+ entry.done = make(chan struct{})
140139 entry.inFlight = true
141140 done := entry.done
142141 entry.mu.Unlock()