- if (method_exists($event->getKernel(), 'terminateWithException')) {
- $this->exceptionHandler = array($event->getKernel(), 'terminateWithException');
+ if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) {
+ $request = $event->getRequest();
+ $hasRun = &$this->hasTerminatedWithException;
+ $this->exceptionHandler = function (\Exception $e) use ($kernel, $request, &$hasRun) {
+ if ($hasRun) {
+ throw $e;
+ }
+ $hasRun = true;
+ $kernel->terminateWithException($e, $request);
+ };