Now let's suppose your web worker code (i.e. game AI) has a bug (which mine does). Well, you can't use a function like console.log to try to find it because workers don't have access to the console. So you have to write a workaround using message passing. Joy. So let's say you do that and it isn't good enough to find the bug. You need to step through it in a debugger like Firebug. Guess what? Firebug can't debug code inside a worker! Chrome's debugger supposedly can, but y'know what? I'm tired of messing around with this shit.
By the way, did I mention IE9 and below don't even have web workers? So kiss IE goodbye if you want to use them.
And all this is without even going into the stupidity of, say, having variables global by default (which bit me several times until I learned about "use strict" — the use of which can introduce compatibility problems of its own). Honestly, I don't understand how people write complete apps in this thing. A language where you have to jump through a million goddamn hoops just to write something similar to a chess program? Pretty goddamn pathetic.