What is what
Request Animation Frame - from MDN
nextTick - an API for scheduling work after the event loop is emptied. We use an emulation using iframes so basically we get message broker in frames covered instead of the actual setImmediate as it only works in IE10+.
Web worker - single threaded JS execution environment that is a separate process from the main thread (i.e. it does not share anything with it and scheduling execution in it is not related to the scope of async programming from JS developer's perspective - we cannot influence when things are happening there but we have the guarantee that those things that happen follow the same rules: async, single thread)
So what are test results showing
- responses from web worker always come in order (assuming no async programming is done there)
- the timing of the responses varies (i.e. run the test several times and see how sometimes 1, 2 or 3 responses arrive before the RAF or nextTick execution kicks in)
- nextTick kicks in after the first RAF
If you want to review the results make sure to: a) run the test several times and b) test in different browsers.
The code is here.
Conclusion: it is not trivial to drive animations and data processing from a worker instance if you depend on input for it.