У меня есть функция, которая вызывается во время удаления попапа:
function removePopUpFilter() {
  let filterContainer = document.querySelector('.filter-container');
  filterContainer.style.opacity = '0';
  filterContainer.remove()
}
Мне надо каким-либо образом сделать это ассинхронным, чтобы сначала контейнер получил свойство опасити 0, а затем удалился. В классах задан трансишен, поэтому опасити  происходит плавно.
Я могу это сделать обернув удаление в таймаут, но мне кажется это очень некрасивый способ писать такой код асинхронно:
function removePopUpFilter() {
  let filterContainer = document.querySelector('.filter-container');
  filterContainer.style.opacity = '0';
  setTimeout(() => {
    filterContainer.remove()
  }, 400);
}