у меня с таймаутом только заработало ->
modalLink.addEventListener('click', e => {
overlay.classList.add('show');
setTimeout(() => {overlay.style.opacity = 1;}, 1);
});
closeBtn.addEventListener('click', e => {
overlay.style.opacity = 0;
setTimeout(() => {overlay.classList.remove('show')}, 200);
});