diff --git a/src/Service/ContributionAggregator.php b/src/Service/ContributionAggregator.php index 24d37cb..8a8b59a 100644 --- a/src/Service/ContributionAggregator.php +++ b/src/Service/ContributionAggregator.php @@ -19,7 +19,7 @@ final class ContributionAggregator /** @return array */ public function aggregate(): array { - $contributions = []; + $pending = []; /** @var ProviderInterface $provider */ foreach ($this->providers as $provider) { @@ -28,7 +28,17 @@ final class ContributionAggregator } try { - foreach ($provider->fetch() as $date => $count) { + $pending[] = [$provider, $provider->startFetch()]; + } catch (\Throwable $e) { + $this->logger->warning(sprintf('%s fetch failed: %s', $provider::class, $e->getMessage()), ['exception' => $e]); + } + } + + $contributions = []; + + foreach ($pending as [$provider, $handle]) { + try { + foreach ($provider->resolveFetch($handle) as $date => $count) { $contributions[$date] = ($contributions[$date] ?? 0) + $count; } } catch (\Throwable $e) {