async loader should warn when it sees a circular dependency to a module that does not also depend on 'exports'

Description

Right now if you accidentally create a circular dependency, one of the two modules ends up being defined as a blank object, and this can cause much confusion when debugging as I learned firsthand.

It would be good if the loader warned if this happens, with the exception that the warning should be suppressed if one of the modules also depends on 'exports' (which would indicate that the author is aware of the circular dependency and is working around it).