Решил проблему, добавив таймер в 1 секунду после вызова showModal:
function getCookie(name) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
document.addEventListener('DOMContentLoaded', function() {
let mcookie = getCookie("mcookie");
if (mcookie != "no") {
setTimeout(function() {
showModal("obratnyij-zvonok/");
setTimeout(() => {
document.querySelector(".fancybox-close").addEventListener("click", async function() {
if ('modalwin' in window) {
modalwin.style.display = "none";
}
// записываем cookie на 1 день, с которой мы не показываем окно
let date = new Date;
date.setDate(date.getDate() + 1);
document.cookie = "mcookie=no; path=/; expires=" + date.toUTCString();
});
}, 1000);
}, 15000);
}
});
Всем спасибо за помощь и подсказки!