That's the idea - this is supposed to be concurrent, since the Actor's mailbox is blocking on ask and will not receive the message if it's waited.

This doesn't really break the Actor's max degree of parallelism, because no matter which technique gets used the loop is still blocking and the `CompleteFuture` just yields back to that context.

Do you have an example of an unintended consequence this code could have? That would help me understand.

I just ran a test - async / await works with or without this code, but the Task.Wait scenario only works with it. I was under the impression from earlier that the dispatcher doesn't fully support async / await inside the Actor's event loop, otherwise I would have tried that first.

async / await is preferred, but from a design point of view I don't think it should matter to the end-user.