Magento2 controller_action_predispatch not working with Varnish enabled

I am using Magento version 2.3
Varnish 6 enabled
Docker setup

I am implementing force login on event ‘controller_action_predispatch’. Below is my code:

app/code/Vendor/Module/etc/frontend/events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="controller_action_predispatch">
        <observer name="kernel_request_before" instance="VendorModuleObserverFrontSendResponseBefore" shared="false" />
    </event>
</config>

app/code/Vendor/Module/Observer/FrontSendResponseBefore.php

<?php

namespace VendorModuleObserver;

use MagentoFrameworkEventObserver as EventObserver;
use MagentoFrameworkEventObserverInterface;

class FrontSendResponseBefore implements ObserverInterface
{
    private $_helper;

    /**
    * @var MagentoFrameworkAppResponseRedirectInterface
    */
    protected $redirect;

    private $_objectManager;

    public function __construct(
        VendorModuleHelperCoreHelper $helper,
        MagentoFrameworkAppResponseRedirectInterface $redirect,
        MagentoFrameworkObjectManagerInterface $objectmanager
    ) {
        $this->_helper = $helper;
        $this->redirect = $redirect;
        $this->_objectManager = $objectmanager;
    }

    public function execute(MagentoFrameworkEventObserver $observer)
    {
        $actionName = $observer->getEvent()->getRequest()->getFullActionName();
        $controller = $observer->getControllerAction();

        $allowedUrls = array(
            'customer_account_login', 
            'customer_account_loginPost',
            'customer_account_logout', 
            'customer_account_logoutSuccess',
            'customer_account_forgotpassword',
            'customer_account_forgotpasswordpost',
            'customer_account_createPassword', 
            'customer_account_createpassword',
            'customer_account_resetpasswordpost'
        );

        $customerSession = $this->_objectManager->create('MagentoCustomerModelSessionFactory')->create();

        $redirect = true;
        if (!$this->ifForceLoginEnabledForStore()) {
            $redirect = false;
        } else if (in_array($actionName, $allowedUrls)) {
            $redirect = false;
        } elseif ($customerSession->isLoggedIn()) {
            $redirect = false;
        }

        echo 4; die;

        if ($redirect) {
            $this->redirect->redirect($controller->getResponse(), 'customer/account/login');
        }
    }

    private function ifForceLoginEnabledForStore()
    {
        $storeId = $this->_helper->getCurrentStoreId();

        if ($this->_helper->getConfigValue('general/general/forcelogin', $storeId) == true) {

            return true;
        }

        return false;
    }
}

As you see I have added a die statement, but it does not execute when the cached version of page is loaded.

Does anyone has any idea how to fix this?