52ed5a9bf8
It is possible the compiler can reorder the read of the head item and the head itself. This could lead to a situation where the item returned was not really the head item.