/// <summary>
 /// Initializes a new instance of the AbstractionContext class.
 /// </summary>
 /// <param name="tokenSource">A Cancellation token source.</param>
 /// <param name="logger">A logger instance.</param>
 /// <param name="httpOperationTimeout">The HTTP operation timeout.</param>
 /// <param name="retryPolicy">The retry policy.</param>
 public AbstractionContext(CancellationTokenSource tokenSource, ILogger logger, TimeSpan httpOperationTimeout, IRetryPolicy retryPolicy)
 {
     this.RetryPolicy = retryPolicy;
     tokenSource.ArgumentNotNull("tokenSource");
     logger.ArgumentNotNull("logger");
     this.CancellationTokenSource = tokenSource;
     this.Logger = logger;
     this.HttpOperationTimeout = httpOperationTimeout;
 }