diff --git a/src/index.js b/src/index.js
index 1952512..794a6e2 100644
--- a/src/index.js
+++ b/src/index.js
@@ -105,7 +105,7 @@ export function addHook(hook, opts = {}) {
throw new TypeError(`Invalid Extension: ${ext}`);
}
const oldLoader = Module._extensions[ext] || originalJSLoader;
- oldLoaders[ext] = oldLoader;
+ oldLoaders[ext] = Module._extensions[ext];
loaders[ext] = Module._extensions[ext] = function newLoader(mod, filename) {
let compile;
diff --git a/test/basics.js b/test/basics.js
index 2f0686d..9c154af 100644
--- a/test/basics.js
+++ b/test/basics.js
@@ -56,3 +56,29 @@ test('matcher is called only once per file', (t) => {
reverts.forEach(call);
});
+
+test('reverts to previous loader', (t) => {
+ require.extensions['.foojs'] = require.extensions['.js'];
+ const revert = t.context.addHook((code) => code.replace('@@a', ''), {
+ exts: ['.foojs'],
+ });
+
+ t.not(require.extensions['.foojs'], require.extensions['.js']);
+
+ revert();
+
+ t.is(require.extensions['.foojs'], require.extensions['.js']);
+});
+
+test('reverts to nothing if no previous loader', (t) => {
+ t.is(require.extensions['.foo2js'], undefined);
+ const revert = t.context.addHook((code) => code.replace('@@a', ''), {
+ exts: ['.foo2js'],
+ });
+
+ t.not(require.extensions['.foo2js'], undefined);
+
+ revert();
+
+ t.is(require.extensions['.foo2js'], undefined);
+});