use a Map() and store the events in memory, or localstorage. use that like a cache... if the event you're looking for is not there, then do the request
Discussion
I already do have in-memory and indexedDB for all events that come through, but it's only used at the moment to get single missing events to build threads, can't really query it easily yet