@@ -14,7 +14,7 @@ import FoundationNetworking
1414public struct BaseRequestHandler : RequestHandler , Sendable {
1515 let urlSession : URLSession
1616 let eventSource : EventSource
17-
17+
1818 private let decoder : JSONDecoder = . openAIDecoder
1919
2020 private let logger = PlatformLogger ( subsystem: " me.recouse.OpenAI " , category: " BaseRequestHandler " )
@@ -23,8 +23,8 @@ public struct BaseRequestHandler: RequestHandler, Sendable {
2323 self . urlSession = urlSession
2424 self . eventSource = eventSource
2525 }
26-
27- public func perform< T> ( for model: T . Type , with request: Request ) async throws -> T where T: Decodable {
26+
27+ public func perform< T> ( for model: T . Type , with request: Request ) async throws -> T where T: Decodable , T : Sendable {
2828 let urlRequest = urlRequest ( from: request)
2929 let ( data, response) = try await urlSession. data ( for: urlRequest)
3030
@@ -40,13 +40,13 @@ public struct BaseRequestHandler: RequestHandler, Sendable {
4040 let parsed = try decoder. decode ( T . self, from: data)
4141 return parsed
4242 }
43-
43+
4444 public func stream< T> (
4545 for model: T . Type ,
4646 with request: Request
47- ) -> AsyncThrowingStream < T , Error > where T: Decodable {
47+ ) -> AsyncThrowingStream < T , Error > where T: Decodable , T : Sendable {
4848 let urlRequest = urlRequest ( from: request)
49-
49+
5050 return AsyncThrowingStream { continuation in
5151 Task { @Sendable in
5252 let dataTask = eventSource. dataTask ( for: urlRequest)
@@ -91,7 +91,7 @@ public struct BaseRequestHandler: RequestHandler, Sendable {
9191 }
9292 }
9393 }
94-
94+
9595 private func urlRequest( from request: Request ) -> URLRequest {
9696 var url = URL ( string: " https:// \( request. host) " ) !
9797 if #available( macOS 13 . 0 , iOS 16 . 0 , tvOS 16 . 0 , watchOS 9 . 0 , * ) {
@@ -109,7 +109,7 @@ public struct BaseRequestHandler: RequestHandler, Sendable {
109109
110110 return urlRequest
111111 }
112-
112+
113113 private func parseError( from data: Data , with httpStatusCode: Int ) -> OpenAIError {
114114 do {
115115 let error = try decoder. decode ( APIError . self, from: data)
0 commit comments