diff --git a/relaypool.go b/relaypool.go index 983e1c9..5455d54 100644 --- a/relaypool.go +++ b/relaypool.go @@ -157,7 +157,15 @@ func (r *RelayPool) Sub(filters Filters) (subID string, events chan EventMessage return true }) - return id, eventStream, func() { close(unsub) } + return id, eventStream, func() { gracefulClose(unsub) } +} + +func gracefulClose(c chan struct{}) { + select { + case <-c: + default: + close(c) + } } func Unique(all chan EventMessage) chan Event {