static IEnumerable<IEvent> Proc(IEnvironment env)
    {
        var ev1 = env.Event();
        env.Start(DoSucceed(env, ev1));
        yield return ev1;
        if (ev1.Succeeded)
            Console.WriteLine(ev1.Value);

        var ev2 = env.Event();
        env.Start(DoFail(env, ev2));
        yield return ev2;
        if (ev2.Failed)
            Console.WriteLine(ev2.Value);
    }