You don't even need two loops IMO:
```php
foreach ($promotions as $promotion) {
    if (!$this->checker->isEligible($subject, $promotion)) {
       continue;
    }

    $this->applicator->apply($subject, $promotion);

    if ($promotion->isExclusive()) {
        return;
    }
}