I don't think we need "if and only if the next element is already available". That's already a requirement otherwise this would mean it's blocking, and the first rule of this entire system is don't block.

More importantly would be to state that it MAY do this as long as it doesn't break the other rule about causing stack overflows.