public Task <Recommendations> GetAsync(
            int?limit,
            string market,
            IEnumerable <string> seedArtists,
            IEnumerable <string> seedGenres,
            IEnumerable <string> seedTracks,
            Action <ITuneableTrackAttributesBuilder> buildTunableTrackAttributes,
            CancellationToken cancellationToken)
        {
            var builder = new TuneableTrackAttributesBuilder();

            buildTunableTrackAttributes?.Invoke(builder);

            return(this.GetAsync <Recommendations>(
                       cancellationToken,
                       queryParams: new
            {
                limit,
                market,
                seed_artists = seedArtists.JoinWithComma(),
                seed_genres = seedGenres.JoinWithComma(),
                seed_tracks = seedTracks.JoinWithComma(),
                attributes = builder.GetAttributes().ToList()
            }));
        }
        public Task <Recommendations> GetAsync(
            int limit,
            string market,
            IEnumerable <string> seedArtists,
            IEnumerable <string> seedGenres,
            IEnumerable <string> seedTracks,
            Action <ITuneableTrackAttributesBuilder> buildTunableTrackAttributes,
            CancellationToken cancellationToken)
        {
            var builder = new TuneableTrackAttributesBuilder();

            buildTunableTrackAttributes?.Invoke(builder);

            return(this.GetAsync <Recommendations>(
                       cancellationToken,
                       queryStringParameters: new { limit },
                       optionalQueryStringParameters: new
            {
                market,
                seed_artists = GetList(seedArtists),
                seed_genres = GetList(seedGenres),
                seed_tracks = GetList(seedTracks),
                attributes = builder.GetAttributes().ToList()
            }));
        }