The state transition diagram for domains and the logic of start and resume keys, allows easy implementation of coroutines. Presume two programs running in different domains. X is running and holds a start key to Y and Y is available. X calls its key and this is state B. In state B x is waiting and Y is running with a resume key to X. Y now calls X via its resume key to X. Now the roles of X and Y are reversed from state B. A sequence of such calls, back and forth, constitutes a coroutine. If X or Y should instead return to the resume key the coroutine is done.

This is very convenient for calling someone who needs more parameters, or needs a varying number of parameters depending on Y’s advising X how many to send as a consequence of early parameter values, etc.

There is one serious drawback in some situations: If Y has many clients and X fails to make the 2nd call, Y remains busy with no entirely easy fix.