static long dm_evalOnOtherMachineWithReturnValue_timeout = 60000; sS dm_evalOnOtherMachineWithReturnValue(fS computerID, S code, O... _) { fS id = aGlobalID(); final new Var var; temp vmBus_onMessage('gotFromPrivateChat, voidfunc(S sender, S msg) { if (var.has() || neq(sender, computerID)) ret; new Matches m; if (!startsWith(msg, "done " + id + " ", m)) ret; if (neq(getAuthorOfSignedText(msg), computerID)) ret; S s = firstLine(m.rest()); if (startsWith(s, "direct: ", m)) var.set(m.rest()); else if (startsWith(s, "quoted: ", m)) var.set(unquote(m.rest())); else var.set("unknown mode"); }); dm_privateChat_sendSigned(computerID, computerID + " eval " + (boolOptPar(_, 'fresh) ? "fresh " : "") + id + ": " + code); ret unquote(waitForVarToBeNotNullWithTimeout(var, dm_evalOnOtherMachineWithReturnValue_timeout)); }