@@ -25,31 +25,8 @@ public final class URLSessionTransport: Transport {
25
25
// See `Transport.next`.
26
26
public var next : ( any Transport ) ? { nil }
27
27
28
- private final class LockedURLSessionDataTask : @unchecked Sendable {
29
- let lock = Locking . FastLock ( )
30
- var task : URLSessionDataTask ?
31
-
32
- func setAndResume( _ newTask: URLSessionDataTask ) {
33
- self . lock. withLock {
34
- assert ( self . task == nil )
35
- self . task = newTask
36
- newTask. resume ( )
37
- }
38
- }
39
-
40
- func cancelAndClear( ) {
41
- self . lock. withLock {
42
- self . task? . cancel ( )
43
- self . task = nil
44
- }
45
- }
46
- }
47
-
48
- /// An in-progress data task representing a request in flight
49
- private let task = LockedURLSessionDataTask ( )
50
-
51
28
public init ( _ session: URLSession ) {
52
- self . session = session
29
+ self . session = . init ( configuration : session. configuration , delegate : session . delegate , delegateQueue : session . delegateQueue )
53
30
}
54
31
55
32
/// Sends the request using a `URLSessionDataTask`
@@ -58,7 +35,7 @@ public final class URLSessionTransport: Transport {
58
35
/// - completion: The completion handler that is called after the response is received.
59
36
/// - response: The received response from the server.
60
37
public func send( request: URLRequest , completion: @escaping @Sendable ( Result < TransportResponse , any Error > ) -> Void ) {
61
- self . task . setAndResume ( self . session. dataTask ( with: request) { ( data, response, error) in
38
+ self . session. dataTask ( with: request) { data, response, error in
62
39
if let error {
63
40
return completion ( . failure( ( error as? URLError ) ? . asTransportFailure ?? . unknown( error) ) )
64
41
}
@@ -71,11 +48,13 @@ public final class URLSessionTransport: Transport {
71
48
}
72
49
73
50
completion ( . success( httpResponse. asTransportResponse ( withData: data) ) )
74
- } )
51
+ } . resume ( )
75
52
}
76
53
77
54
public func cancel( ) {
78
- self . task. cancelAndClear ( )
55
+ self . session. getAllTasks {
56
+ $0. forEach { $0. cancel ( ) }
57
+ }
79
58
}
80
59
}
81
60
0 commit comments