Outcome: {
    kind: "return";
    result: any;
} | {
    kind: "throw";
    problem: any;
}