public async Task <IDocument> NavigateAsync(DocumentRequest request, CancellationToken cancel) { var target = request.Source is HtmlUrlBaseElement urlBase ? urlBase.Target : null; var context = _context.ResolveTargetContext(target); var loader = context.GetService <IDocumentLoader>(); if (loader != null) { var download = loader.FetchAsync(request); cancel.Register(download.Cancel); using (var response = await download.Task.ConfigureAwait(false)) { if (response != null) { return(await context.OpenAsync(response, cancel).ConfigureAwait(false)); } } } return(await context.OpenNewAsync(request.Target.Href, cancel).ConfigureAwait(false)); }