first Promised Zone
The zone of this set that is already promised to somebody else, or null when none is.
Public because it is the one condition a model may legitimately have to react to, and the hand-written version of it is easy to get wrong: the interesting test is a promise, not a hold. Asking for a zone another holder already holds is allowed and simply waits for the hold to end. tryRequestZones and tryHoldZonesFor are this test and the request made together, and are the better way to use it; this is here for a model that wants to report the conflict rather than react to it.
Return
the first zone already promised, or null when the whole set could be asked for
Parameters
zones
the zones a closure would cover