in src/main/scala/com/gu/http/redirect/resolver/UrlResolver.scala [36:43]
def resolve(uri: URI): Future[Resolution] = resolveFollowing(RedirectPath(uri))
private def resolveFollowing(redirectPath: RedirectPath): Future[Resolution] =
if (redirectPath.numRedirects >= maxRedirects || redirectPath.isLoop) Future.successful(Unresolved(redirectPath))
else cache.get(redirectPath.latestUri).flatMap {
case Redirect(subsequentUri) => resolveFollowing(redirectPath.adding(subsequentUri))
case conclusion: Conclusion => Future.successful(Resolved(redirectPath, conclusion))
}