Изменение dom после fetch()

Всем привет! Возник вопрос касательно всему любимой асинхронности в javascript. Я использую fetch() для отправки запрос на добавление данных и получаю в ответ распарсенный json. После чего нужно подгрузить в элемент новое значение из ответа, но так как fetch срабатывает после рендера dom, то этот элемент не подхватывается классическим document.querySelector().innerHTML, но зато $().html Хотелось бы просто узнать у знающих людей, почему так происходит. Спасибо.

Пример запроса в функции.

*
* Опциональная функция добавления в корзину
* @var selector - css селектор кнопки - инициатора добавления
 */
function addProductsInCart(selector) {
    let s = document.querySelectorAll(selector);
    if (s) {
        s.forEach(function(value, key){
            value.addEventListener("click", function(event){
                //массив id добавляемых продуктов
                const arr = this.getAttribute('data-products').split(',');

                //массив с параметрами запросов в виде x-www-form-urlencoded
                let options = [];

                //скрипт обработки запроса
                const url = '/assets/components/minishop2/action.php';
                arr.forEach(function(value,key){
                    options.push(encodeURI(`options=[]&count=1&ms2_action=cart/add&ctx=web&id=${value}`));
                })
                let i = 0;
                if(i < options.length){

                    //функция запроса, возвращающая promise. Вызов идет рекурсивно для выполнение запроса по каждой строке из options
                    postData(url, 'POST', options[i], 0)
                        .then(response => {
                            postData(url, 'POST', options[i+1])
                                .then(response => {
                                    // console.log(response.data.total_count);
                                    setTimeout(function(){
                                        miniShop2.Message.success('Товары добавлены в корзину');

                                        //именно в этому месте в селекторе .ms2_total_count необходимо записать новое значение из response. C jQuery работает ок.
                                        $('.ms2_total_count').html(response.data.total_count);

                                        //с vanilla js содержимое не меняется
                                        document.querySelector('.ms2_total_count').innerHTML = response.data.total_count;

                                        $('#msMiniCartHeaderFixed').addClass('full');
                                    }, 100)
                                })
                        });
                }
            });
        })
    }
}
addProductsInCart('.add-custom-products');

И сама функция с fetch()

/*
* Функция запроса к серверу через fetch()
* @var url - адрес запроса
* @var method - тип запрос
* @var data - тело запроса (если есть)
 */
function postData(url, method, data = ''){
        return fetch(url, {
            "credentials": "include",
            "headers": {
                "accept": "application/json, text/javascript, */*; q=0.01",
                "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
                "cache-control": "no-cache",
                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                "pragma": "no-cache",
                "sec-fetch-mode": "cors",
                "sec-fetch-site": "same-origin",
                "x-requested-with": "XMLHttpRequest"
            },
            "referrer": window.location.href,
            "referrerPolicy": "no-referrer-when-downgrade",
            "body": data,
            "method": method,
            "mode": "cors"
        })
        .then(response => response.json())//возврат результат в json
}

Ответы (0 шт):