TLDR: Workers (in Chrome and Firefox at least) appear to adhere to a global max number of connections per host name.
I used this code to create a number of workers...
/* jshint esversion: 6 */ (function() { 'use strict'; const iWorkerCount = 20; for(let i = 0; i < iWorkerCount; i++) { const oWorker = new Worker('/js/worker.js'); } }());
... and then each worker made a remote request to an image service...
/* jshint esversion: 6 */ (function() { 'use strict'; const sUrl = 'https://loremflickr.com/320/240'; fetch(sUrl).then(sResponse => { console.log(sResponse); }); }());
There's an initial batch of requests that complete at the same time and then the remaining requests trickle in shortly once the number max requests dips
XWebWorkers making XHRs to the same host and attempting to make a synchronous XHR from the main UI thread (which should never be done). Also note that the first part isn't even a requirement, you can block the UI thread just by making any synchronous XHR from the main thread.