The CAS-loop stack you're building here is the same core primitive behind java.util.concurrent's ConcurrentLinkedDeque and the free-list allocators inside jemalloc, chosen specifically because it lets threads make progress without ever blocking on a futex. Herlihy and Shavit's 'The Art of Multiprocessor Programming' uses this exact stack as its opening example precisely because it's simple enough to implement but exposes every classic lock-free pitfall, including the ABA problem covered next in this track.