note that onKernelTerminate contains 

         if (!$response->isSuccessful()) {
             return $this->cacheManager->flush();
         }

not sure if this is still called after onKernelException, but if it is we would not need to listen to the exception but simple remove the skip flush code.