Transactions reverts silently

My contract calls a destroyed contract sometimes, and the transaction reverts silently. If handleBalanceUpdate calls destroyed contract, the balances stay unchanged even if I use try/catch.

function _transfer(address from, address to, uint256 amount) internal override {
        require(transfersEnabled || essentialAddress[from] || essentialAddress[to], "Transfers not allowed");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 currentBalanceFrom = balanceOf(from);
        uint256 currentBalanceTo = balanceOf(to);
        
        //  Deduct the fee if necessary
        uint256 fees = calculateFee(amount, from, to);
        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        super._transfer(from, to, amount - fees);
        handleBalanceUpdate(from, to, currentBalanceFrom, currentBalanceTo); <-- Something strange is happening here
        require(balanceOf(from) == currentBalanceFrom - amount, "Sender balance output is unexpected"); <-- this fails if handleBalanceUpdate makes an internal call to a destoryed contract

        _distributeFee();
    }

I am struggling with this issue for a few days now and can't really figure out why it's happening.
Would really appreciate your help.