diff --git a/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift b/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift index 2517174..997c1a6 100644 --- a/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift +++ b/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift @@ -72,13 +72,8 @@ public class ConcurrentSequenceExecutor: SequenceExecutor { private func execute(_ task: Task, with sequenceHandle: SynchronizedSequenceExecutionHandle, _ execution: @escaping (Task, Any) -> SequenceExecution) { taskSemaphore?.wait() taskQueue.async { - if let taskSemaphore = self.taskSemaphore { - defer { - taskSemaphore.signal() - } - } - guard !sequenceHandle.isCancelled else { + self.taskSemaphore?.signal() return } @@ -88,6 +83,8 @@ public class ConcurrentSequenceExecutor: SequenceExecutor { let result = task.typeErasedExecute() let nextExecution = execution(task, result) + self.taskSemaphore?.signal() + switch nextExecution { case .continueSequence(let nextTask): self.execute(nextTask, with: sequenceHandle, execution)