Не уверен, что я полностью понимаю, но когда вы вызываете задачи с помощью s (), они передадут свои результаты.
В вашем случае для задачи A вы выполняете 3 параллельные задачи (группу) ни с чемпередал это и передал это группе задач B.
Не совсем уверен, что вы пытаетесь достичь, если вы хотите просто связать их в цепочку простым
chain([D.si(i, 1), C.s(1), B.s(1), A.s(1)])
Должно сделать, есличто задачи все принимают 2 аргумента