Решил проблему разделив логику загрузки и добавления изображений
loadImages(){
let promises = [];
this._imagesUrl.forEach( elem => {
let obj = {};
for (let prop in elem) {
let promise = new Promise( resolve => {
let image = new Image();
image.classList.add('plane-image');
image.setAttribute('src', elem[prop]);
obj[prop] = image;
image.onload = () => resolve(image);
})
promises.push(promise);
}
this._images.push(obj);
})
Promise.all(promises)
.then ( () => this._imagesLoaded = true )
.catch( () => this.loadImages() );
}