<?xml version="1.0" encoding="UTF-8"?><!-- we test that sendidexpr works with cancel.  If it takes the most recent value of var1, it should cancel 
delayed event1.  Thus we get event2 first and pass.  If we get event1 or an error first, cancel didn't work and we 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="'bar'"/>
  </datamodel>
   
<state id="s0">
  <onentry>
   <send id="foo" event="event1" delay="1s"/>
   <send event="event2" delay="5s"/>
   <assign location="Var1" expr="'foo'"/>
   <cancel sendidexpr="Var1"/>
    </onentry>

  <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>