Tach!
Na in dem Eventhandler wohl ziemlich sicher auf "img"?!
Stimmt, da war noch eine Funktion als Eventhandler, die ich übersehen habe.
In dem Fall muss man da ganz anders vorgehen. Die zeitgemäße Lösung bei solchen asynchronen Sachen lautet Promise. Man kann zunächst mal gar kein Ergebnis zurückliefern, weil erst irgendwann nach dem Ende der umschließenden Funktion das Event auftritt. Hier hilft nun ein Promise, welches man erst einmal zurückgibt. Dieses Versprechen wird später eingelöst oder vielleicht doch abgewiesen.
Promises gibt es erst mit ES6 direkt in Javascript, wenn man Kompatibilität mit noch nicht unterstützenden Browsern brauchst, kannst man einen Nachbau nehmen, beispielsweise Q.
dedlfix.