Не работает removeEventListener

При нажатии на Esc, не срабатывает removeEventListener на ивент 'keydown' и не могу понять почему.

const main = document.querySelector('main');

const isEscEvent = (evt) => {
  return evt.key === 'Escape' || evt.key === 'Esc';
};

const closePopup = (element) => {
  return () => {
    main.removeChild(element);
    document.removeEventListener('keydown', popupEscKeydown(element));
  };
};

const popupEscKeydown = (element) => {
  return (evt) => {
    if (isEscEvent(evt)) {
      evt.preventDefault();
      closePopup(element)();
    }
  };
};

const successEvents = () => {
  const successMessage = main.querySelector('.success');

  document.addEventListener('keydown', popupEscKeydown(successMessage));
  successMessage.addEventListener('click', closePopup(successMessage));
};

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

Автор решения: Ruslan Mart

Потому что popupEscKeydown возвращает каждый раз новую функцию.

document.addEventListener('keydown', function handler(event) {
  if (event.key.startsWith('Esc')) {
     this.removeEventListener(event.type, handler);
  }
});
→ Ссылка