<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Mar 20, 2011, at 7:18 AM, David Bruant wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<div text="#000000" bgcolor="#ffffff">
    Le 20/03/2011 14:33, Jorge Chamorro a écrit :
    <blockquote cite="mid:20CE64AA-7B2D-4227-BF06-4C787E6F47A1@jorgechamorro.com" type="cite">
      <pre wrap="">On 20/03/2011, at 13:51, Jorge wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">So given 2 timers, expiring at t0 and t1 with t0 < t1, if Date.now() is >= t0 and >= t1, I would expect t0 to be serviced first, yes.</pre>
      </blockquote>
    </blockquote>
    <font size="-1"><big>The difference is that the system can
        understand what is your expectation as a user when you've
        clicked twice. Both click are clearly sequenced. For timers, the
        non-determinism due to the computation time of computea and
        computeb prevents you from /expecting/ anything.</big></font></div></blockquote><div><br></div>There's no non-determinism in the order in which f1 and f2 were set as timeouts. The setTimeout(f1, 1000) call happens-before setTimeout(f2, 0), deterministically.</div><div><br></div><div>The issue here is resolved by breaking ties by inserting after all timers with the same deadline.</div><div><br></div><div>/be</div><br></body></html>