StorageResponseClassifier
using Azure.Core;
using System;
namespace Azure.Storage
{
    internal class StorageResponseClassifier : ResponseClassifier
    {
        public Uri SecondaryStorageUri { get; set; }
        public override bool IsRetriableResponse(HttpMessage message)
        {
            if (SecondaryStorageUri != (Uri)null && message.Request.Uri.Host == SecondaryStorageUri.Host && message.Response.Status == 404)
                return true;
            string value;
            if (message.Response.Status >= 400 && message.Response.Headers.TryGetValue("x-ms-error-code", out value) && (value == "InternalError" || value == "OperationTimedOut" || value == "ServerBusy"))
                return true;
            return base.IsRetriableResponse(message);
        }
        public override bool IsErrorResponse(HttpMessage message)
        {
            if (message.Response.Status == 409) {
                RequestHeaders headers = message.Request.Headers;
                if (message.Response.Headers.TryGetValue("x-ms-error-code", out string value) && (value == "ContainerAlreadyExists" || value == "BlobAlreadyExists"))
                    return !headers.Contains(HttpHeader.Names.IfMatch) && !headers.Contains(HttpHeader.Names.IfNoneMatch) && !headers.Contains(HttpHeader.Names.IfModifiedSince) && !headers.Contains(HttpHeader.Names.IfUnmodifiedSince);
            }
            return base.IsErrorResponse(message);
        }
    }
}