For the purpose of teaching,
I implemented simple bi-directional communication channels based on
WebWorkers:
Here is an application:
https://github.com/githwxi/ATS-Postiats-contrib/tree/master/contrib/libatscc/libatscc2js/TEST/Worker
Here is the channel implementation:
Right now, the channels are untyped. It should be straightforward to
support typed channels via session types.
You have to try this: It is a lot of fun 
Cheers!