A tool I am working on requires reliable delivery of events between participating entities.
In the .NET/F# eventing infra (i.e. Event<>/IEvent<>), framework does not guarantee that all event handlers will be called. E.g. crash in one handler may crash the entity firing the events and prevent other handlers from being called.
I understand the reason why framework cannot guarantee that viz. it wouldn't have enough knowledge required to catch/bubble/propagate application exceptions.
However for my app, I am thinking of writing a 'derivative' of the Event<>/IEvent<> infra to [a] prevent handler exceptions from bubbling up [b] guaranteeing all handlers are called [c] fits well with the language
I have said 'derivative' as I don't have a design in mind yet. So few questions before I start:
Have folks done something like this before? Is there a better way to achieve my goals?