diff --git a/app/assets/javascripts/admin/components/ace-editor.js.es6 b/app/assets/javascripts/admin/components/ace-editor.js.es6 index 01773d2cbf8..a03865c40ce 100644 --- a/app/assets/javascripts/admin/components/ace-editor.js.es6 +++ b/app/assets/javascripts/admin/components/ace-editor.js.es6 @@ -36,6 +36,7 @@ export default Ember.Component.extend({ loadScript("/javascripts/ace/ace.js", { scriptTag: true }).then(() => { window.ace.require(['ace/ace'], loadedAce => { + if (!this.element || this.isDestroying || this.isDestroyed) { return; } const editor = loadedAce.edit(this.$('.ace')[0]); editor.setTheme("ace/theme/chrome"); diff --git a/app/assets/javascripts/discourse/lib/load-script.js.es6 b/app/assets/javascripts/discourse/lib/load-script.js.es6 index 4edc9a452ac..cc24df86de8 100644 --- a/app/assets/javascripts/discourse/lib/load-script.js.es6 +++ b/app/assets/javascripts/discourse/lib/load-script.js.es6 @@ -5,13 +5,16 @@ const _loading = {}; function loadWithTag(path, cb) { const head = document.getElementsByTagName('head')[0]; + let finished = false; let s = document.createElement('script'); s.src = path; - if (Ember.Test) { Ember.Test.pendingAjaxRequests++; } + if (Ember.Test) { + Ember.Test.registerWaiter(() => finished); + } head.appendChild(s); s.onload = s.onreadystatechange = function(_, abort) { - if (Ember.Test) { Ember.Test.pendingAjaxRequests--; } + finished = true; if (abort || !s.readyState || s.readyState === "loaded" || s.readyState === "complete") { s = s.onload = s.onreadystatechange = null; if (!abort) {