 core/modules/rest/rest.services.yml                    |  2 +-
 .../src/EventSubscriber/ResourceResponseSubscriber.php | 18 ++++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/core/modules/rest/rest.services.yml b/core/modules/rest/rest.services.yml
index 7742e1d..e71d007 100644
--- a/core/modules/rest/rest.services.yml
+++ b/core/modules/rest/rest.services.yml
@@ -41,7 +41,7 @@ services:
     class: Drupal\rest\EventSubscriber\ResourceResponseSubscriber
     tags:
       - { name: event_subscriber }
-    arguments: ['@serializer', '@renderer', '@current_route_match']
+    arguments: [] #'@serializer', '@renderer', '@current_route_match']
   rest.config_subscriber:
     class: Drupal\rest\EventSubscriber\RestConfigSubscriber
     arguments: ['@router.builder']
diff --git a/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php b/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
index 5cb887b..1987eb0 100644
--- a/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
+++ b/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
@@ -51,10 +51,11 @@ class ResourceResponseSubscriber implements EventSubscriberInterface {
    * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
    *   The current route match.
    */
-  public function __construct(SerializerInterface $serializer, RendererInterface $renderer, RouteMatchInterface $route_match) {
-    $this->serializer = $serializer;
-    $this->renderer = $renderer;
-    $this->routeMatch = $route_match;
+  public function __construct() {
+//  public function __construct(SerializerInterface $serializer, RendererInterface $renderer, RouteMatchInterface $route_match) {
+//    $this->serializer = $serializer;
+//    $this->renderer = $renderer;
+//    $this->routeMatch = $route_match;
   }
 
   /**
@@ -69,6 +70,10 @@ public function onResponse(FilterResponseEvent $event) {
       return;
     }
 
+    $this->serializer = \Drupal::service('serializer');
+    $this->renderer = \Drupal::service('renderer');
+    $this->routeMatch = \Drupal::service('current_route_match');
+
     $request = $event->getRequest();
     $format = $this->getResponseFormat($this->routeMatch, $request);
     $this->renderResponseBody($request, $response, $this->serializer, $format);
@@ -196,8 +201,9 @@ protected function flattenResponse(ResourceResponseInterface $response) {
    * {@inheritdoc}
    */
   public static function getSubscribedEvents() {
-    // Run shortly before \Drupal\Core\EventSubscriber\FinishResponseSubscriber.
-    $events[KernelEvents::RESPONSE][] = ['onResponse', 5];
+    // Run before DynamicPageCacheSubscriber::onResponse(), which has priority
+    // 100.
+    $events[KernelEvents::RESPONSE][] = ['onResponse', 128];
     return $events;
   }
 
