Wrapping image loading in a Promise does not work as expected. After the image load event fires event.target contains a IMG element When the promise is resolved event.target is null It can be worked around by resolving the promise with event.target rather than event Here is a demonstration http://jsfiddle.net/8ys0dn4x/1/ Fails in Safari and webkit nightly In Firefox the code works as expected In Chrome there is also a bug, however it is slightly different in that the last promise to resolve in a group still remembers the target, but others are null Here is a variation on the demonstration http://jsfiddle.net/d13sf3f2/5/
Minimal test case (new Promise( function( resolve ) { var i = document.createElement("IMG"); i.onload = function( event ) { console.log("onload", event.target ); // -> <img ...> resolve(event); }; i.src = "http://i.imgur.com/waV028T.jpg"; })).then( function( resolved_event ) { console.log( resolved_event.target ); // -> null });
Mass move bugs into the DOM component.
It seems to work for me and matching with Chrome Canary 127. Test case from Comment 0 shows two console message across all browsers (Safari 17.5 , Chrome Canary 127 and Firefox Nightly 128).