/// <summary>
        /// Gets the option strikes based on auto expiry dates for option chain asynchronous.
        /// </summary>
        /// <param name="cmd">The command.</param>
        /// <returns>Option strikes for date range.</returns>
        private static async Task <List <decimal> > MultipleOptionChainForAutoExpiryAsync(TradierOptionStrikeCommand cmd)
        {
            var expirationDates = await new TradierOptionExpirationRequest(
                new TradierOptionExpirationCommand(cmd, cmd.Symbol)).GetAsync();

            var tasks = expirationDates.Take(cmd.ExpiryDateRangeLimit.Value)
                        .Select(date => new TradierOptionStrikeRequest(new TradierOptionStrikeCommand(cmd)
            {
                Symbol         = cmd.Symbol,
                ExpirationDate = date
            }).GetAsync()).ToList();

            var wholeData = new List <decimal>();

            await Task.WhenAll(tasks).ContinueWith(res =>
                                                   res.Result.ToList().ForEach(tResult => wholeData.AddRange(tResult)));

            return(wholeData);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TradierOptionStrikeRequest"/> class.
 /// </summary>
 /// <param name="command">The command.</param>
 /// <exception cref="ArgumentNullException">command</exception>
 protected TradierOptionStrikeRequest(TradierOptionStrikeCommand command)
     : base(command?.BaseUrl, command?.AccessKey)
 {
     Command = command ?? throw new ArgumentNullException(nameof(command));
 }