this change is necessary for partial module loading support, which is required for loading modules in a cycle.
the interceptor caches exports before it finishes loading the module so that if another module requires the first module in a cycle we won't reload the module (which is how node's standard module caching works).
This means we need the exports variable assigned before we call the interceptor.
Otherwise we'll have an infinite loop if two modules require eachother in a cycle.