diff --git a/Sources/SyncStream/BidirectionalAsyncStream.swift b/Sources/SyncStream/BidirectionalAsyncStream.swift index 74b6bbc..f7db129 100644 --- a/Sources/SyncStream/BidirectionalAsyncStream.swift +++ b/Sources/SyncStream/BidirectionalAsyncStream.swift @@ -218,15 +218,19 @@ public extension BidirectionalAsyncStream { finished = true - let filename = (fileName as NSString).lastPathComponent - let terminated = Terminated( - fileName: fileName, - functionName: functionName, - lineNumber: lineNumber, - columnNumber: columnNumber, - error: error - ) - state = .error(terminated) + if let error = (error as? Terminated) { + state = .error(error) + } else { + let filename = (fileName as NSString).lastPathComponent + let terminated = Terminated( + fileName: fileName, + functionName: functionName, + lineNumber: lineNumber, + columnNumber: columnNumber, + error: error + ) + state = .error(terminated) + } await yieldSemaphore.signal() } diff --git a/Sources/SyncStream/BidirectionalSyncStream.swift b/Sources/SyncStream/BidirectionalSyncStream.swift index 6d49be1..bfc1332 100644 --- a/Sources/SyncStream/BidirectionalSyncStream.swift +++ b/Sources/SyncStream/BidirectionalSyncStream.swift @@ -262,15 +262,19 @@ public extension BidirectionalSyncStream { finished = true - let filename = (fileName as NSString).lastPathComponent - let terminated = Terminated( - fileName: fileName, - functionName: functionName, - lineNumber: lineNumber, - columnNumber: columnNumber, - error: error - ) - state = .error(terminated) + if let error = (error as? Terminated) { + state = .error(error) + } else { + let filename = (fileName as NSString).lastPathComponent + let terminated = Terminated( + fileName: fileName, + functionName: functionName, + lineNumber: lineNumber, + columnNumber: columnNumber, + error: error + ) + state = .error(terminated) + } yieldSemaphore.signal() }