diff --git a/core/core.services.yml b/core/core.services.yml
index afccb31..9f660aa 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -669,6 +669,11 @@ services:
   http_kernel.basic:
     class: Symfony\Component\HttpKernel\HttpKernel
     arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
+  http_middleware.pop_request:
+    class: Drupal\Core\StackMiddleware\PopRequestMiddleware
+    arguments: ['@request_stack']
+    tags:
+      - { name: http_middleware, priority: 400 }
   http_middleware.negotiation:
     class: Drupal\Core\StackMiddleware\NegotiationMiddleware
     tags:
diff --git a/core/lib/Drupal/Core/StackMiddleware/PopRequestMiddleware.php b/core/lib/Drupal/Core/StackMiddleware/PopRequestMiddleware.php
new file mode 100644
index 0000000..8a9a9e1
--- /dev/null
+++ b/core/lib/Drupal/Core/StackMiddleware/PopRequestMiddleware.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\StackMiddleware\PopRequestMiddleware.
+ */
+
+namespace Drupal\Core\StackMiddleware;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class PopRequestMiddleware implements HttpKernelInterface {
+
+  /**
+   * The request stack.
+   *
+   * @var \Symfony\Component\HttpFoundation\RequestStack
+   */
+  protected $requestStack;
+
+  /**
+   * The wrapped HTTP kernel.
+   *
+   * @var \Symfony\Component\HttpKernel\HttpKernelInterface
+   */
+  protected $app;
+
+  /**
+   * Creates a new PopRequestMiddleware instance.
+   *
+   * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
+   *   The HTTP kernel.
+   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
+   *   The request stack.
+   */
+  public function __construct(HttpKernelInterface $app, RequestStack $requestStack) {
+    $this->app = $app;
+    $this->requestStack = $requestStack;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) {
+    $response = $this->app->handle($request, $type, $catch);
+
+    // Match the pushing of \Drupal\Core\DrupalKernel::preHandle but put it in
+    // a middleware which is executed on the most outer layer.
+    $this->requestStack->pop();
+
+    return $response;
+  }
+
+}
