resolve issues with CAS return value by resorting to not-actually-atomic impl