Skip to content

Commit 96c3989

Browse files
committed
workaround 5.10
1 parent 4883ff7 commit 96c3989

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

Tests/AsyncHTTPClientTests/TransactionTests.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,7 @@ private actor Promise<Value: Sendable> {
657657

658658
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
659659
extension Transaction {
660+
#if compiler(>=6.0)
660661
fileprivate static func makeWithResultTask(
661662
request: sending PreparedRequest,
662663
requestOptions: RequestOptions = .forTests(),
@@ -684,4 +685,40 @@ extension Transaction {
684685

685686
return (await transactionPromise.value, task)
686687
}
688+
#else
689+
fileprivate static func makeWithResultTask(
690+
request: PreparedRequest,
691+
requestOptions: RequestOptions = .forTests(),
692+
logger: Logger = Logger(label: "test"),
693+
connectionDeadline: NIODeadline = .distantFuture,
694+
preferredEventLoop: EventLoop
695+
) async -> (Transaction, _Concurrency.Task<HTTPClientResponse, Error>) {
696+
// It isn't sendable ... but on 6.0 and later we use 'sending'.
697+
struct UnsafePrepareRequest: @unchecked Sendable {
698+
var value: PreparedRequest
699+
}
700+
701+
let transactionPromise = Promise<Transaction>()
702+
let unsafe = UnsafePrepareRequest(value: request)
703+
let task = Task {
704+
try await withCheckedThrowingContinuation {
705+
(continuation: CheckedContinuation<HTTPClientResponse, Error>) in
706+
let request = unsafe.value
707+
let transaction = Transaction(
708+
request: request,
709+
requestOptions: requestOptions,
710+
logger: logger,
711+
connectionDeadline: connectionDeadline,
712+
preferredEventLoop: preferredEventLoop,
713+
responseContinuation: continuation
714+
)
715+
Task {
716+
await transactionPromise.fulfil(transaction)
717+
}
718+
}
719+
}
720+
721+
return (await transactionPromise.value, task)
722+
}
723+
#endif
687724
}

0 commit comments

Comments
 (0)