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