func addResponseHandler()

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) }
    }