Yes, it would not work if we had more than one thread of control actually running at the same time, but that just means that one would have to change the implementation of the fetchAndUpdate primitive in that world.