private async Task IndexFromSourceAsync(string id, NuGetVersion version, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); _logger.LogInformation( "Attempting to mirror package {PackageId} {PackageVersion}...", id, version); Stream packageStream = null; try { using (var stream = await _upstreamClient.GetPackageStreamAsync(id, version, cancellationToken)) { packageStream = await stream.AsTemporaryFileStreamAsync(); } _logger.LogInformation( "Downloaded package {PackageId} {PackageVersion}, indexing...", id, version); var result = await _indexer.IndexAsync(packageStream, cancellationToken); _logger.LogInformation( "Finished indexing package {PackageId} {PackageVersion} with result {Result}", id, version, result); } catch (PackageNotFoundException) { _logger.LogWarning( "Failed to download package {PackageId} {PackageVersion}", id, version); return; } catch (Exception e) { _logger.LogError( e, "Failed to mirror package {PackageId} {PackageVersion}", id, version); } finally { packageStream?.Dispose(); } }