ExceptionHelper
Utility methods to handle lock-free combining of Exceptions
as well as hosting a terminal-exception indicator for
lock-free termination support.
The singleton instance of the exception indicating a terminal state,
DO NOT LEAK or signal this via OnError!
Atomically swaps in the Terminated exception into the field and
returns the previous exception in that field (which could be the
Terminated instance too).
Atomically sets the field to the given new exception or combines
it with any pre-existing exception as a new AggregateException
unless the field contains the Terminated instance.
Tries to atomically set the Exception on the given field if it is
still null.