setTimeout может задержать логику скрытия, но она может не работать каждый раз, потому что это зависит от скорости браузера, короткая задержка может не вызывать щелчок по ссылке тоже
Почему бы не использовать событие "click"?
document.addEventListener('click', function (e) {
bubbleDOM.style.visibility = 'hidden';
}, false);
Или вы можете сделать прыжок в функции слушателя:
document.addEventListener('mousedown', function (e) {
bubbleDOM.style.visibility = 'hidden';
window.location = e.target.href;
}, false);