m{ S1 await f S2 } translates to m{ S1 if(f.isDone) S2 else Runnable msg = () -> {S2} send(this,msg) } Please correct me if I got the syntax wrong