The event is working as expected as there is nothing for the MapImageLayer to load so it automatically is set to true.
Here is a general pattern to handle layer loading to execute some code after it loads.
var layer = new XyzLayer(...);
function doSomethingWithTheLayer() {
console.log("Layer loaded");
// Do something
}
function handleLayerLoadFailure() {
console.log("Layer failed to load");
// Do something
}
if (layer.loaded) {
doSomethingWithTheLayer();
}
else if (layer.loadError) {
handleLayerLoadFailure();
}
else {
var loadHandle = layer.on("load", function() {
loadHandle.remove();
doSomethingWithTheLayer();
});
var loadErrorHandle = layer.on("error", function() {
loadErrorHandle.remove();
handleLayerLoadFailure();
});
}