func process()

in sdk/core/AzureCore/Source/Pipeline/PipelineStage.swift [93:144]


    func process(
        request pipelineRequest: PipelineRequest,
        completionHandler: @escaping PipelineStageResultHandler
    ) {
        on(request: pipelineRequest) { request, error in
            // if error occurs during the onRequest phase, back out and
            // propagate immediately
            if let error = error {
                let pipelineResponse = PipelineResponse(
                    request: request.httpRequest,
                    response: nil,
                    logger: request.logger,
                    context: request.context
                )
                self.on(error: error, pipelineResponse: pipelineResponse) { errorOut, handled in
                    if !handled {
                        completionHandler(.failure(errorOut), nil)
                        return
                    }
                }
            }
            self.next!.process(request: request) { result, httpResponse in
                switch result {
                case let .success(pipelineResponse):
                    self.on(response: pipelineResponse) { response, error in
                        if let error = error {
                            self.on(error: error, pipelineResponse: pipelineResponse) { errorOut, handled in
                                if !handled {
                                    completionHandler(.failure(errorOut), httpResponse)
                                    return
                                }
                            }
                        }
                        completionHandler(.success(response), httpResponse)
                    }
                case let .failure(error):
                    let pipelineResponse = PipelineResponse(
                        request: request.httpRequest,
                        response: httpResponse,
                        logger: request.logger,
                        context: request.context
                    )
                    self.on(error: error, pipelineResponse: pipelineResponse) { errorOut, handled in
                        if !handled {
                            completionHandler(.failure(errorOut), httpResponse)
                            return
                        }
                    }
                }
            }
        }
    }