What does Atomics.compareExchange return, and how does it differ from a hypothetical boolean compare-and-swap?const prev = Atomics.compareExchange(arr, i, expected, replacement);