While gwt-core and the other refactored modules are intended to be 
both gwt-compatible and j2cl-compatible, there are a small handful of 
classes and methods in those refactored modules that, in their original 
form, were somehow specific to the GWT compiler itself. 
The
 com.google.gwt.core.client.GWT class is one such class that mostly 
consists of "magic", where there is no java or js implementation of many
 of its members, but those members exist to allow the compiler to 
rewrite certain calls with specific behavior. As such, 
org.gwtproject.core.client.GWT cannot correctly implement all of those 
methods, and throws exceptions where it must fail.
In
 a case like this, you must call the original method on the 
com.google.gwt class while you still use GWT. If you migrate to j2cl and
 closure, you must find another solution there - j2cl has no split 
points, and closure-compiler doesn't even think of split points in the 
same way that GWT does. So, as long as you continue to use GWT 2, call the
 runAsync() method on the com.google.gwt.core.client.GWT class, and refer to 
https://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html for more guidance.