ProgramBuilder

constructor(endWith: (Result) -> Action, exceptional: (Throwable) -> Action = { e -> throw e })