This is related to the change to ``discard`` / unregistering a non-registered provider becoming a no-op. If the provider wasn't in the set it might already be empty, and so we'd try to send the event again.

I reverted the implementation to ``remove`` but now exit early if the provider isn't in the set, which is more obvious.