Использовать Promise надо
Определяем функцию, возвращающую Promise, разрешающийся, когда картинка загрузится (ну или ошибка, т.к. мы их все равно не обрабатываем)
const loadimg = (img, src) => {
return new Promise (res => {
img.onload = img.onerror = () => res()
img.src = src
})
}
Затем ждем, когда все картинки загрузятся и потом показываем диалог
Вместо строк 4-8
Promise.allSetted([...img].map((im, j) => loadimg(im, `cartoons/${inset[activeUnit][j]}.png`)))
.then(() => dial.show())