public FluentMiddlewareHttpHandler(
     IFluentHttpMiddlewareRunner middlewareRunner,
     FluentHttpClient httpClient,
     RequestTracker requestTracker,
     HttpMessageHandler messageHandler = null
     ) : base(messageHandler ?? new HttpClientHandler())
 {
     _middlewareRunner = middlewareRunner;
     _httpClient       = httpClient;
     _requestTracker   = requestTracker;
 }
        /// <summary>
        /// Initializes an instance of <see cref="FluentHttpClient"/>.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="serviceProvider"></param>
        /// <param name="middlewareRunner"></param>
        public FluentHttpClient(FluentHttpClientOptions options, IServiceProvider serviceProvider, IFluentHttpMiddlewareRunner middlewareRunner)
        {
            _serviceProvider        = serviceProvider;
            _middlewareRunner       = middlewareRunner;
            _middleware             = options.Middleware;
            _requestBuilderDefaults = options.RequestBuilderDefaults;

            Identifier       = options.Identifier;
            BaseUrl          = options.BaseUrl;
            Formatters       = options.Formatters;
            DefaultFormatter = options.DefaultFormatter;

            RawHttpClient = Configure(options);
            Headers       = RawHttpClient.DefaultRequestHeaders;
        }
        /// <summary>
        /// Initializes an instance of <see cref="FluentHttpClient"/>.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="clientFactory"></param>
        /// <param name="serviceProvider"></param>
        public FluentHttpClient(
            FluentHttpClientOptions options,
            IFluentHttpClientFactory clientFactory,
            IServiceProvider serviceProvider
            )
        {
            _options                = options;
            _clientFactory          = clientFactory;
            _serviceProvider        = serviceProvider;
            _requestBuilderDefaults = options.RequestBuilderDefaults;
            _middlewareBuilder      = options.MiddlewareBuilder;
            _requestTracker         = new RequestTracker();

            Identifier       = options.Identifier;
            BaseUrl          = options.BaseUrl;
            Formatters       = options.Formatters;
            DefaultFormatter = options.DefaultFormatter;

            _middlewareRunner = options.MiddlewareBuilder.Build(this);
            RawHttpClient     = Configure(options);
            Headers           = RawHttpClient.DefaultRequestHeaders;
        }