(A great thing about HN is getting to talk with the authors directly)<p>I didn&#x27;t recognise that you were talking chiefly about javascript. It is true that my example doesn&#x27;t apply here.<p>Ok, then I would make one comment (and edit my first comment).<p>I would avoid the discussion of simultaneity at the start<p><pre><code>    &#x27;Events in parentheses happen “simultaneously”.
     In practice they happen at slightly different times,     
     but separated by only a couple of nanoseconds, so
     people understand them to be simultaneous. Events (c1c2) 
     are called glitches and sometimes considered a problem
     because one would expect only c2 to happen.&#x27;
</code></pre>
Because you are working in a single threaded simultaneous events just don&#x27;t exist. The glitches you describe occur completely independently of timing, nanoseconds or otherwise. Drawing up diagrams where events occur at the same time is adding complexity which doesn&#x27;t exist.<p><pre><code>    errors            ---e1-------e2---------------
    userActions       -u1------u2------------u3----
    analyticsMessages ---e1u1--(e1u2 e2u2)---e2u3--



    errors            ---e1----e2------------------
    userActions       -u1----------u2--------u3----
    analyticsMessages ---e1u1--(e2u1 e2u2)---e2u3--
</code></pre>
Both of these scenarios produce glitches (as I understand it). So we don&#x27;t need any notion of &#x27;simultaneous events&#x27; to create them.<p>Anyway - that is nitpicking. I enjoyed your article. I agree that the scenario described at top does not apply in javascript.<p>I too strongly dislike callbacks :)