rpc should cache events so the event cache flush from consensus can be synchronous without blocking on event callbacks