I was writing some unit tests for SharedWorkers, and I saw some behavior that seems to be spec compliant, but which was counter-intuitive from a developer standpoint.<div><br></div><div>Let&#39;s say that you have two message ports - some other window or a shared worker owns the other end of those ports.</div>
<div><br></div><div>You then do this:</div><div><br></div><div>port1.postMessage(&quot;foo&quot;);</div><div>port2.postMessage(&quot;bar&quot;);</div><div><br></div><div>At the other end, the order of the delivery of these messages is entirely arbitrary (could be &quot;foo&quot;-&gt;&quot;bar&quot;, or &quot;bar&quot;-&gt;&quot;foo&quot;) even though those ports share the same owner. This is because each port is an individual task source, and ordering within a given task source is guaranteed by the spec, but ordering across task sources is intentionally not guaranteed (this allows UAs to prioritize task sources).</div>
<div><br></div><div>Anyhow, just thought I&#39;d point it out, and make sure there isn&#39;t something in the spec that I missed that should affect delivery ordering in this case.</div><div><br></div><div>-atw</div><div><br>
</div><div><br></div>