diff --git a/src/system-extension-contextual.js b/src/system-extension-contextual.js
index 740e5a173..88087b14f 100644
--- a/src/system-extension-contextual.js
+++ b/src/system-extension-contextual.js
@@ -17,7 +17,7 @@ addStealExtension(function (loader) {
if (definer) {
var localName = name + '/' + parentName;
- if(!loader.has(name)) {
+ if(!loader.has(localName)) {
// `definer` could be a function or could be a moduleName
if (typeof definer === 'string') {
definer = pluginLoader['import'](definer);
diff --git a/test/ext-steal-clone/multiple/first-test.js b/test/ext-steal-clone/multiple/first-test.js
new file mode 100644
index 000000000..d766cc1b0
--- /dev/null
+++ b/test/ext-steal-clone/multiple/first-test.js
@@ -0,0 +1,5 @@
+var clone = require("steal-clone");
+
+module.exports = function(){
+ return clone({}).import("./first")
+}
diff --git a/test/ext-steal-clone/multiple/first.js b/test/ext-steal-clone/multiple/first.js
new file mode 100644
index 000000000..cbc07bd23
--- /dev/null
+++ b/test/ext-steal-clone/multiple/first.js
@@ -0,0 +1 @@
+module.exports = {name: "first"};
diff --git a/test/ext-steal-clone/multiple/index.html b/test/ext-steal-clone/multiple/index.html
new file mode 100644
index 000000000..0d3b070dd
--- /dev/null
+++ b/test/ext-steal-clone/multiple/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+ clone tests
+
+
+
+
+
+
+
diff --git a/test/ext-steal-clone/multiple/second-runs-tests.js b/test/ext-steal-clone/multiple/second-runs-tests.js
new file mode 100644
index 000000000..f656a3037
--- /dev/null
+++ b/test/ext-steal-clone/multiple/second-runs-tests.js
@@ -0,0 +1,5 @@
+var clone = require("steal-clone");
+
+module.exports = function(){
+ return clone({}).import('./second')
+};
diff --git a/test/ext-steal-clone/multiple/second-test.js b/test/ext-steal-clone/multiple/second-test.js
new file mode 100644
index 000000000..17058124e
--- /dev/null
+++ b/test/ext-steal-clone/multiple/second-test.js
@@ -0,0 +1 @@
+module.exports = require("./second-runs-tests");
diff --git a/test/ext-steal-clone/multiple/second.js b/test/ext-steal-clone/multiple/second.js
new file mode 100644
index 000000000..016dbd0ac
--- /dev/null
+++ b/test/ext-steal-clone/multiple/second.js
@@ -0,0 +1 @@
+module.exports = {name: "second"};
diff --git a/test/ext-steal-clone/multiple/test.js b/test/ext-steal-clone/multiple/test.js
new file mode 100644
index 000000000..99a35dd48
--- /dev/null
+++ b/test/ext-steal-clone/multiple/test.js
@@ -0,0 +1,18 @@
+var doClone1 = require("./first-test");
+var doClone2 = require("./second-test");
+
+Promise.all([doClone1(), doClone2()]).then(function(){
+ if (typeof window !== "undefined" && window.assert) {
+ assert.ok(true, "promises resolved");
+ done();
+ } else {
+ console.log("worked");
+ }
+}, function(){
+ if (typeof window !== "undefined" && window.assert) {
+ assert.ok(false, "promises failed");
+ done();
+ } else {
+ console.log("promises failed");
+ }
+});
diff --git a/test/steal_clone_test.js b/test/steal_clone_test.js
index 6fdcb8e2b..a2e330090 100644
--- a/test/steal_clone_test.js
+++ b/test/steal_clone_test.js
@@ -49,3 +49,8 @@ QUnit.test("works when using relative overrides", function(assert) {
QUnit.test("what happens within a cloned loader should not leak", function(assert) {
makeIframe("ext-steal-clone/leak/index.html", assert);
});
+
+
+QUnit.test("multiple clones can work at different paths", function(assert) {
+ makeIframe("ext-steal-clone/multiple/index.html", assert);
+});