JSFiddle - React, Tailwind, and code Playground

Babel + JSX

class Utilities {

  processData()  {
	  var result = this.validateData();
    
    // This will fail for AppB, because validateData returns a promise.
    var length = result.length;
		return length;
  }

  validateData(data) {
    // Must be subclassed
  }

}

class AppA extends Utilities {
  validateData(data) {
    return [1, 2, 3];
  }
}

class AppB extends Utilities {
    // returns a Promise
  async validateData(data) {
    return [1, 2, 3];
  }
}

var utilA = new AppA();
console.log(utilA.processData());

var utilB = new AppB();
console.log(utilB.processData());