diff --git a/Sources/AnyLanguageModel/LanguageModelSession.swift b/Sources/AnyLanguageModel/LanguageModelSession.swift index 5ac33376..688a126c 100644 --- a/Sources/AnyLanguageModel/LanguageModelSession.swift +++ b/Sources/AnyLanguageModel/LanguageModelSession.swift @@ -143,7 +143,7 @@ public final class LanguageModelSession: @unchecked Sendable { let session = self let relay = AsyncThrowingStream.Snapshot, any Error> { continuation in let stream = upstream - Task { + let task = Task { session.beginResponding() var lastSnapshot: ResponseStream.Snapshot? do { @@ -178,6 +178,11 @@ public final class LanguageModelSession: @unchecked Sendable { } session.endResponding() } + continuation.onTermination = { termination in + if case .cancelled = termination { + task.cancel() + } + } } return ResponseStream(stream: relay) }