OK, I think I understand, finally.
The DataReceived() bit following the first Wait For is actually the declaration for the DataReceived() function, which is called by the CallSubDelayed3() calls, and whatever follows that declaration can use the variables Success and Data(). In essence, that function takes over from whatever code was before the Wait For.
I thought DataReceived() was some function that was supposed to be defined somewhere else, and I could not see where it was defined...
Thank you a lot, that was not clear at all reading the documentation, probably because I had preconceived ideas of how it "should" work, based on my experience with proto-threads in C...
So to summarize, there is no way to use boolean flags in a Wait For construct as I asked in the original post?