Better way than setInterval to wait for an image load?
"Must wait for the image to load" ... "Is there a nicer way?"


Yes, 
At first, instead of accessing the image by index el[0] - extract the image at once and give the variable meaningful name:

let img = document.querySelectorAll('#comic img')[0];


Next, you need to embed "load" event listener into Promise executor function to ensure the image has loaded:

let loadPromise = new Promise(function(resolve, reject) {
    img.addEventListener('load', function() {
       resolve();
    });
    setTimeout(() =&gt; {
        if (!img.complete) reject('Timeout');
    }, 5000)
});
loadPromise.then(() =&gt; {
    console.log(img.naturalWidth);
    let container = document.querySelectorAll('.main-wrapper &gt; div &gt; section &gt; section.column.column-1.grid-left-4.grid-width-16');
    container[0].style.width = (img.naturalWidth + 420) + 'px';
});