<?xml version="1.0" encoding="UTF-8"?><!-- we test that delayexpr uses the current value of var1, not its initial value
(If it uses the initial value, event2 will be generated first, before event1.  If it uses the current value, 
event1 will be raised first.  Succeed if event1 occurs before event2, otherwise fail --><scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="ecmascript">
<datamodel>
  <data id="Var1" expr="'0s'"/>
  </datamodel>
  
<state id="s0">
  <onentry>
   <assign location="Var1" expr="'3s'"/>
   <send delayexpr="Var1" event="event2"/>
   <send delay="1s" event="event1"/>
    </onentry>
    
  <transition event="event1" target="s1"/>
  <transition event="event2" target="fail"/>
 </state>

<state id="s1">
  <transition event="event2" target="pass"/>
  <transition event="*" target="fail"/>
  </state>
   
   <final id="pass"><onentry><log label="Outcome" expr="'pass'"/></onentry></final>
   <final id="fail"><onentry><log label="Outcome" expr="'fail'"/></onentry></final>

</scxml>