How to issue 404 from a KernelEvents::REQUEST event
You can set a response early in a request event: 

 public function my404Check(GetResponseEvent $event) {

    // only return a response for a master request
    if (!$event-&gt;isMasterRequest()) {
      return;
    }

    // Do some logic here to check if it should be a 404.

    $response = new Response('', Response::HTTP_NOT_FOUND);
    $event-&gt;setResponse($response);
  }


The event dispatcher checks if a response is already set and returns this response without executing any more code to build a Drupal response.