static O evalInNewThread(fO f) { final new Flag flag; final new Var var; final new Var exception; thread { try { var.set(callF(f)); } catch e { exception.set(e); } flag.raise(); } flag.waitUntilUp(); if (exception.has()) throw rethrow(exception!); ret var!; }