Skip to content

Commit 85caac5

Browse files
Merge pull request #1507 from apollographql/fix/websocket-callback-queue
Fix callback queue for Websocket
2 parents 0de2954 + 2feb366 commit 85caac5

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

Sources/ApolloWebSocket/WebSocketTransport.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,15 @@ extension WebSocketTransport: NetworkTransport {
360360
contextIdentifier: UUID? = nil,
361361
callbackQueue: DispatchQueue = .main,
362362
completionHandler: @escaping (Result<GraphQLResult<Operation.Data>, Error>) -> Void) -> Cancellable {
363+
364+
func callCompletion(with result: Result<GraphQLResult<Operation.Data>, Error>) {
365+
callbackQueue.async {
366+
completionHandler(result)
367+
}
368+
}
369+
363370
if let error = self.error.value {
364-
completionHandler(.failure(error))
371+
callCompletion(with: .failure(error))
365372
return EmptyCancellable()
366373
}
367374

@@ -371,12 +378,12 @@ extension WebSocketTransport: NetworkTransport {
371378
let response = GraphQLResponse(operation: operation, body: jsonBody)
372379
do {
373380
let graphQLResult = try response.parseResultFast()
374-
completionHandler(.success(graphQLResult))
381+
callCompletion(with: .success(graphQLResult))
375382
} catch {
376-
completionHandler(.failure(error))
383+
callCompletion(with: .failure(error))
377384
}
378385
case .failure(let error):
379-
completionHandler(.failure(error))
386+
callCompletion(with: .failure(error))
380387
}
381388
}
382389
}

0 commit comments

Comments
 (0)