diff --git a/app/assets/javascripts/workers/worker_world.js b/app/assets/javascripts/workers/worker_world.js
index 9a5a9ded5..eb99b8c6a 100644
--- a/app/assets/javascripts/workers/worker_world.js
+++ b/app/assets/javascripts/workers/worker_world.js
@@ -65,19 +65,19 @@ self.console = console;
 
 self.importScripts('/javascripts/lodash.js', '/javascripts/world.js', '/javascripts/aether.js');
 
-// TODO: setting these in a loop in IE11 throws an error
-Object.defineProperty(self, XMLHttpRequest, {
-  get: function() { throw new Error("Access to XMLHttpRequest is forbidden."); },
-  configurable: false
-});
-Object.defineProperty(self, importScripts, {
-  get: function() { throw new Error("Access to importScripts is forbidden."); },
-  configurable: false
-});
-Object.defineProperty(self, Worker, {
-  get: function() { throw new Error("Access to Worker is forbidden."); },
-  configurable: false
-});
+var restricted = ["XMLHttpRequest", "Worker"];
+if (!self.navigator || !(self.navigator.userAgent.indexOf('MSIE') > 0) && 
+    !self.navigator.userAgent.match(/Trident.*rv\:11\./)) {
+  // Can't restrict 'importScripts' in IE11, skip for all IE versions
+  restricted.push("importScripts");
+}
+for(var i = 0; i < restricted.length; ++i) {
+  // We could do way more from this: http://stackoverflow.com/questions/10653809/making-webworkers-a-safe-environment
+  Object.defineProperty(self, restricted[i], {
+    get: function() { throw new Error("Access to that global property is forbidden."); },
+    configurable: false
+  });
+}
 
 self.transferableSupported = function transferableSupported() {
   if (typeof self._transferableSupported !== 'undefined') return self._transferableSupported;