diff --git a/src/Queue/SynchronousQueue.php b/src/Queue/SynchronousQueue.php index b2d42e9f..34c0842e 100644 --- a/src/Queue/SynchronousQueue.php +++ b/src/Queue/SynchronousQueue.php @@ -15,9 +15,23 @@ public function enqueue(callable $task) private function drain() { - /** @var callable $task */ - while ($task = array_shift($this->queue)) { - $task(); + for ($i = key($this->queue); isset($this->queue[$i]); $i++) { + $task = $this->queue[$i]; + + $exception = null; + + try { + $task(); + } catch (\Exception $exception) { + } + + unset($this->queue[$i]); + + if ($exception) { + throw $exception; + } } + + $this->queue = []; } }