I just started using web workers using the workerpool library last week. There's something wildly satisfying about true parallelism in the browser.
I had an embarrassingly parallel problem with validating user drawn geometries against hundreds of thousands of others in real time and web workers is a godsend.
Which works on Node.js, and the browser. (Supports fork, worker_threads, and WebWorkers)
The advantage of this is that the workers become generic enough to run anything. Instead of having to have many "specialized" workers.
Performance-wise eval is not slow, and it is encapsulated inside of the actual worker. Obviously you don't want a user to be able to control any input. But for most cases we are talking about code related to processing, which involves hard coded functions, and the "external-data" being ArrayBuffers.
I had an embarrassingly parallel problem with validating user drawn geometries against hundreds of thousands of others in real time and web workers is a godsend.