I mean, if you look at Flow itself - it could be represented as an abstraction around a process of subscribing to event listener, getting some events (with possibity of generating side to inform that there won't be events anymore) and unsubscribe at any moment. If you want an ability to get the latest event - you can write your code that caches the event (that's what you propose) or include this ability to event sender's contract (StateFlow).