diff --git a/basic.go b/basic.go index 2663fc4..c123f2a 100644 --- a/basic.go +++ b/basic.go @@ -104,15 +104,10 @@ func (s *sub) Out() <-chan interface{} { } func (s *sub) Close() error { - stop := make(chan struct{}) go func() { - for { - select { - case <-s.ch: - case <-stop: - close(s.ch) - return - } + // drain the event channel, will return when closed and drained. + // this is necessary to unblock publishes to this channel. + for range s.ch { } }() @@ -135,7 +130,7 @@ func (s *sub) Close() error { s.dropper(n.typ) } } - close(stop) + close(s.ch) return nil }