guard dispatchers, ignore events sent after Close()
diff --git a/events/event_manager.go b/events/event_manager.go
index 7d7c69f..2e5abd0 100644
--- a/events/event_manager.go
+++ b/events/event_manager.go
@@ -115,6 +115,8 @@
 			Event:       event,
 			Count:       count,
 		}
+		em.Lock()
+		defer em.Unlock()
 		em.dispatchers[apid.EventDeliveredSelector].Send(ede)
 	}
 }
@@ -160,6 +162,10 @@
 
 func (d *dispatcher) Send(e apid.Event) bool {
 	if d != nil {
+		defer func() {
+			err := recover()
+			log.Debugf("Send %v failed: %v", e, err)
+		}()
 		d.channel <- e
 		return true
 	}