RX0155

Domain: Execution

Error message

process.done / process.await asks a read, and %s is not one: %s

In the message, %s marks a value that the engine fills in when it raises the error.

The story

You asked process done, or process await, about something that is not a read of another process. Here is what they expect. Both of them ask about a read, like p dot total, where p holds a process address and total is the label of something that process produces. The argument is not evaluated up front. It stays deferred, and the row asks it, getting back either the value, or one of a few words: not yet, permission denied, or gone. Now, what if your expression is a plain number, a local name, or a calculation? There is nothing there to wait for, because no other process will ever deliver it. The engine could simply answer true, but that would be about a value nobody was ever going to deliver, and an answer like that misleads. So it refuses by name. The message shows the expression you wrote and the shape it wanted. The fix: write a real read, with the process holder and a label, such as p dot result. Then done and await know exactly what to wait for.

Text from the Rush engine's error catalogue.