When a Scope activity executes, it immediately registers any event messages or alarms with the engine prior to the execution of its child activity. Once registered, these messages and alarms are eligible to execute until the scope's child activity completes.
If a fault occurs during execution of the child activity or one of the scope's events, the scope's fault handler attempts to catch the fault.
If the fault cannot be caught by the scope, then it is rethrown. The scope is said to have faulted and is not eligible for compensation.
If the child activity completes successfully, then the scope completes after uninstalling its event messages and timers, allowing them to complete if they are in the middle of executing.
A Scope is said to complete normally when it completes without a fault having been caught or rethrown. If a Scope completes normally, it is eligible for compensation.