```golang func (s *SSEServer) Shutdown(ctx context.Context) error { s.mu.RLock() srv := s.srv s.mu.RUnlock() if srv != nil { s.sessions.Range(func(key, value interface{}) bool { if session, ok := value.(*sseSession); ok { close(session.done) } s.sessions.Delete(key) return true }) return srv.Shutdown(ctx) } return nil } ``` Why do we need to lock?