From a5bf1be69b7c9cf72c65ec3f35b886ed46a22854 Mon Sep 17 00:00:00 2001 From: Simon Whitty Date: Mon, 31 Oct 2022 16:26:38 +1100 Subject: [PATCH] Fix Cancellation --- Sources/Operators/AsyncSwitchToLatestSequence.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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