private async Task<RedirectionResolution> EvaluatePodcastFeedAsync(
            Uri podcastUri, IUriResolution uriResolver)
        {
            var previouslyTriedUris = new List<Uri>();

            for(var i = 0; i < MaximumDepth; i++)
            {
                PodcastFeed feed;
                using (var stream = await uriResolver.GetStreamAsync(podcastUri))
                {
                    feed = await PodcastFeed.LoadFeedAsync(stream).ConfigureAwait(false);
                }

                if (feed.ITunes.NewFeedUrl == null)
                {
                    return new RedirectionResolution(
                        location: podcastUri,
                        feed: feed);
                }
                
                previouslyTriedUris.Add(podcastUri);

                podcastUri = feed.ITunes.NewFeedUrl;
            }

            throw new RedirectResolutionMaxDepthExceededException(
                maximumDepth: MaximumDepth, 
                redirections: previouslyTriedUris);
        }
 public void InitTest()
 {
     _uriResolution = new TestFeedResolution("TestFeeds");
 }
 public Task<RedirectionResolution> ResolveUri(Uri location, IUriResolution uriResolver)
 {
     return EvaluatePodcastFeedAsync(location, uriResolver);
 }