run method
Runs all recipes concurrently and combines results into a typed record.
Implementation
OptionAsync<(A, B, C, D)> run() async {
final results = await (a.run(), b.run(), c.run(), d.run()).wait;
final (optA, optB, optC, optD) = results;
return optA.fold<Opt<(A, B, C, D)>>(
onVal: (va) => optB.fold<Opt<(A, B, C, D)>>(
onVal: (vb) => optC.fold<Opt<(A, B, C, D)>>(
onVal: (vc) => optD.fold<Opt<(A, B, C, D)>>(
onVal: (vd) => Val((va, vb, vc, vd)),
onNil: () => const Nil(),
),
onNil: () => const Nil(),
),
onNil: () => const Nil(),
),
onNil: () => const Nil(),
);
}