Plan of attack 1. Create a new event contract containing all relevant data (pretty much what you see in SI today for a given failure) 2. Avoid using IEvent and instead have to users include the message in their conventions 3. React to the internal MessageFailed event and queue up a event dispatch message 4. Create a satellite to process the message 5. Create an index in raven that matched 1-1 to the external event 6. As dispatch request comes in query raven for data. Throw to retry if data is missing (index stale) 7. Publish new event when data is available Notes: - We need to manage the subscriptions differently from the internal subs so we need to intercept - Threads for the satellite should be configurable separately to allow for throttling