public static async Task <ProcessingResult> ProcessAsync(Configuration configuration, CancellationToken token) { using var fileLoader = new FileLoader(token); var mapper = new UriMapper(configuration); var parser = new ItemParser(mapper, configuration.Mode); var writer = new ItemWriter(mapper); var processor = new ItemProcessor(fileLoader, parser, writer, configuration, token); await processor.RunAsync().ConfigureAwait(false); return(new ProcessingResult(fileLoader.FailedUris)); }