This question is the same, but the answers didn't work.
Attempting to await a function inside an async static function generates this error: Uncaught SyntaxError: await is only valid in async function.
Both functions are static. Why doesn't this work?
    static async getImageDataFromFile(file) {
        // Create promise.
        let promise = $.Deferred();
        // Create reader.
        let reader = new FileReader();
        // Process image.
        reader.onload = function(e) {
            // Get data URL for image.
            let dataUrl = reader.result;
            // Get image data.
            let imageData = await this.getImageDataFromDataUrl(dataUrl);
            promise.resolve(imageData);
        }
        // Read image from hard disk.
        reader.readAsDataURL(file);
        // Return promise.
        return promise;
    }
   static getImageDataFromDataUrl(dataUrl) {
      // Create promise.
      let promise = $.Deferred();
      // Create new image object.
      let image = new Image();
      // Read image properties when loaded.
      image.onload = function() {
         // Wrap data in object.
         let data = {
            image: image,
            width: image.naturalWidth,
            height: image.naturalHeight,
         }
         // Resolve promise.
         promise.resolve(data);
      }
      // Start loading image.
      image.src = dataUrl;
   }
