regen does not work with dequeue(regen(it)), as deque seems to use some C magic instead of __iter__ for copying the list, so the iterator ends up being consumed.
@@ -939,7 +939,7 @@ class chord(Signature):
)
def _traverse_tasks(self, tasks, value=None):
- stack = deque(tasks)
+ stack = deque(list(tasks))
while stack:
task = stack.popleft()
if isinstance(task, group):