Using sequence as event contol

In reply to ben@SystemVerilog.us:

Ben,

Again, the function is called in a sequence matched item in the Observed region.

As per our discussion a few months ago, we both concluded that a void function/task called as part of sequence_match_item executes in Reactive region similar to action block.

I am currently referring to your 2nd reply in this thread

LRM Section 16.11 says

All subroutine calls attached to a sequence are executed at every end point of the sequence. For each end point, the attached calls are executed in the order they appear in the list. Assertion evaluation does not wait on or receive data back from any attached subroutine.
The subroutines are scheduled in the Reactive region,like an action block.

As the 1st line of the above LRM quote says:
“All subroutine calls attached to a sequence are executed at every end point of the sequence.”

So now we have @(seq) which unblocks at every endpoint of sequence as well as the subroutine call which too executes at every endpoint of sequence

Possibly a race condition ? OR
If I go by Figure 4-1 of the LRM the loopback from Observed region to Active region occurs before loopback from Re-NBA to Active.
So should @(seq) unblock before the subroutine gets called in Reactive region ?