diff --git a/Sources/Operators/AsyncSwitchToLatestSequence.swift b/Sources/Operators/AsyncSwitchToLatestSequence.swift index ce86433..736df25 100644 --- a/Sources/Operators/AsyncSwitchToLatestSequence.swift +++ b/Sources/Operators/AsyncSwitchToLatestSequence.swift @@ -221,8 +221,11 @@ where Base.Element: AsyncSequence, Base: Sendable, Base.Element.Element: Sendabl guard !Task.isCancelled else { return nil } self.startBase() - return try await withTaskCancellationHandler { [baseTask] in + return try await withTaskCancellationHandler { [baseTask, state] in baseTask?.cancel() + state.withCriticalRegion { + $0.childTask?.cancel() + } } operation: { while true { let childTask = await withUnsafeContinuation { [state] (continuation: UnsafeContinuation?, Never>) in