// początek funkcji
function scrollTo(element, e) {
e.preventDefault();
...
//wywołanie
bottom.addEventListener('click', (e) => scrollTo(section3, e));
to chyba będzie do zmiany, co drugie kliknięcie przenosi w inne miejsce.
top: element.getBoundingClientRect().top - 50
Wyjaśnienie - elementy middle i bottom są linkami, na kliknięcie wykonują domyślne akcje, które trzeba zablokować przez prevent default.