in Sources/SPTDataLoaderSwift/Request.swift [83:110]
func addResponseHandler(_ responseHandler: @escaping (ResponseState) -> Void) {
var responseState: ResponseState?
accessLock.sync {
switch state {
case .initialized:
if let token = executionHandler(self) {
responseHandlers.append(responseHandler)
state = .executed(token: token)
} else {
responseState = .failed(error: RequestError.executionFailed)
state = .failed(error: RequestError.executionFailed)
}
case .executed:
responseHandlers.append(responseHandler)
case .failed(let error):
responseState = .failed(error: error)
case .completed(let response):
responseState = .completed(response: response)
case .completedWithError(let response, let error):
responseState = .completedWithError(response: response, error: error)
case .cancelled:
break
}
}
responseState.map { responseState in responseHandler(responseState) }
}