— Which they should not, imo
— It's the same as any other thread sync issue
— You use constructs which mitigate things like missed cycles
— Pure JS in browser runs ordered, and you may change the order without Herz
— It is coarse concurrency
— Meaning concurrency occurs on a whole-function basis rather than chunks of functions
— RAF, rIC, setTimeout, async, promise... yields... etc
— HZ is fine-grained concurrency, meaning concurrency occurs for smaller chunks of single functions, so each single function context switches to another one multiple times before it is finished running
Message permanent page
— It's not terribly fine-grained, but it's moreso than the JS event loop