imo, all this complexity doesn’t belong in the client codebase; apps should focus on UX, not implementing event-fetching algorithms; this belongs in libraries that abstract away *how* a note should be fetched.
Discussion
Ideally the library would just have a "fetchEvent(id)" that gets whatever you want from wherever it is.