Order of execution between sequence as event control and Subroutine

Hi Forum,
In SVA sequences generate an event upon upon reaching an endpoint and may be used in an event control (a.k.a. sensitivity list).
I was trying following : edalink
The output differs across tools.
Does the LRM define the order of execution between (a) and (b) below ?
(a) Unblocking of @(s1)
(b) void subroutine execution

On match of $rose(a) at time:5 all of the the following occurs
(1) Local variable ‘lvar’ is assigned in observed region
(2) void function ‘Subroutine’ gets called
(3) Event control @(s1) unblocks

As per LRM 16.11 : “The subroutines are scheduled in the Reactive region, like an action block.”
So void function ‘Subroutine’ executes in Reactive region i.e assignment to module level variable ‘length’ occurs in reactive region at T:5

As per my understanding @(s1) would unblock in loopback from observed region to active region ,
Hence $display() within always executes prior to execution of subroutine.

My expected output ::
T:5 Length == 0
T:5 Function Length called

[Q1] Is there a pre-defined order of execution between the assignment to local variable ‘lvar’ and unblocking of @(s1) ?
The former executes in observed region and the latter executes in loopback from observed to active.

[Q2] Can I state the local variable ‘lvar’ is assigned before @(s1) unblocks ?

[Q3] Is my expected output correct as per LRM ? ( tools show different output )

[Q4] As both $display() within void function as well as action block execute in reactive region, can I state that the LRM doesn’t define order of execution between the two ?