If the key changes too frequently and we cannot send them to the client at the same speed
then the goroutines created here will block on the channel.
As a result, when the channel becomes available again, one of the goroutine will be picked randomly
and this will cause the order of the notifications to be mixed which is a very bad thing in my opinion.

To overcome this problem I have a suggestion:
* Use a bigger buffer size for w.EventChan instead of 1 currently (can be equal to size of history for example).
* Do not create a new goroutine here and use non-blocking send here. When the buffer is full, close the channel and cancel the watcher.
* In get_handler.go, finish the HTTP stream when there are no more messages in the channel.

I can implement this and send a pull request to your branch if you approve this idea.