I had a quick look at the code and got as far as listener.tapNotifier.Wait()
on line 155 in change_listener.go
looks like it blocks here waiting for changes from the tap feed. Maybe the tap feed batches up it change sets and sends them every 2 seconds rather than streaming them as they happen.