Every generated method resolves to RemoteResult, so the plain-Node script must read the business value through `.value`: the CAS ref it passed on to goals/edit was undefined, which the client codec rejected before the request left. The invalid-payload case keeps its try/catch — a codec-rejected argument still throws at the Client Remote face rather than folding into the error branch.