diff --git a/permissions_by_term.module b/permissions_by_term.module
index e905405..28e97db 100644
--- a/permissions_by_term.module
+++ b/permissions_by_term.module
@@ -402,7 +402,7 @@ function permissions_by_term_node_access(NodeInterface $node, $op, AccountInterf
   /** @var \Drupal\permissions_by_term\Service\AccessCheck $accessCheck */
   $accessCheck = \Drupal::service('permissions_by_term.access_check');
 
-  $accessCheck->dispatchDeniedEventOnRestricedAccess($node, $node->language()->getId());
+  return $accessCheck->dispatchDeniedEventOnRestricedAccess($node, $node->language()->getId());
 }
 
 /**
diff --git a/src/Service/AccessCheck.php b/src/Service/AccessCheck.php
index 8e38700..33e0a11 100644
--- a/src/Service/AccessCheck.php
+++ b/src/Service/AccessCheck.php
@@ -250,13 +250,16 @@ class AccessCheck {
 
   public function dispatchDeniedEventOnRestricedAccess(Node $node, string $langcode): void {
     if (!$this->canUserAccessByNode($node, false, $langcode)) {
-      $this->dispatchDeniedEvent($node->id());
+      return $this->dispatchDeniedEvent($node->id());
     }
+
+    return AccessResult::neutral();
   }
 
   private function dispatchDeniedEvent($nodeId): void {
     $accessDeniedEvent = new PermissionsByTermDeniedEvent($nodeId);
     $this->eventDispatcher->dispatch($accessDeniedEvent, PermissionsByTermDeniedEvent::NAME);
+    return AccessResult::forbidden();
   }
 
   public function isAnyTaxonomyTermFieldDefinedInNodeType(string $nodeType) {
