These blocking sends mean that all notifications get backed up if a single channel is not being read from by the client. Have you considered the trade-offs of using channels managed by the Listener instead of having the caller supply them? We could then `close` channels after an `Unlisten` (meshing nicely with ranging over them) and buffer them to mitigate blocking send issues (though not resolve, of course).