Actually I have a bug in `foo()`, the switch statement is executed even if I didn't get a message back. Here's a fix:
void foo() { int result; bool gotMessage; while (true) { gotMessage = receiveTimeout(1000, (int x) { result = x; } ); if (!gotMessage) break; switch (result) { case 1: writeln("one"); break; case 2: writeln("two"); break; default: writeln("something else"); break; } } writeln("Done!"); }