setTimeout() is subject to delays, possible massive ones. As such it is rather useless for performance sensitive code. Use the non-standard setImmediate() API instead, emulating it on postMessage() when it isn't available.