diff --git a/frontend-js/src/main/js/plugin/Plugin.js b/frontend-js/src/main/js/plugin/Plugin.js
index e1c97d61db3396a0f2ec89db3d53fd8efbcbe871..1a7fe201a53b32503634a4e7f935ee146fc1a504 100644
--- a/frontend-js/src/main/js/plugin/Plugin.js
+++ b/frontend-js/src/main/js/plugin/Plugin.js
@@ -7,6 +7,7 @@ var Promise = require("bluebird");
 
 var logger = require('../logger');
 var Functions = require('../Functions');
+var GuiConnector = require('../GuiConnector');
 var PluginData = require('../map/data/PluginData');
 
 var pluginId = 0;
@@ -226,6 +227,11 @@ Plugin.prototype.unload = function () {
     if (validPlugin) {
       return self.getLoadedPluginData().unregister();
     }
+  }).catch(function (e) {
+    GuiConnector.warn("Plugin crashed on upload.");
+    if (typeof self.getLoadedPluginData().notifyError === "function") {
+      self.getLoadedPluginData().notifyError({error: error});
+    }
   }).then(function () {
     if (validPlugin) {
       var removedListeners = self.getMinervaPluginProxy().project.map.removeAllListeners();
diff --git a/frontend-js/src/test/js/plugin/Plugin-test.js b/frontend-js/src/test/js/plugin/Plugin-test.js
index 9c754a212c255c3d5813fdb5cc1e76962f857f9c..527ed43eb005b1b00cb734b7a1ba4bbec4ca9b0a 100644
--- a/frontend-js/src/test/js/plugin/Plugin-test.js
+++ b/frontend-js/src/test/js/plugin/Plugin-test.js
@@ -110,6 +110,18 @@ describe('Plugin', function () {
         assert.equal(1, logger.getWarnings().length);
       });
     });
+    it('plugin crashed during unload', function () {
+      var map = helper.createCustomMap();
+      helper.createSearchDbOverlay(map);
+
+      var plugin = createPlugin("./testFiles/plugin-invalid/crash-unregister.js", map);
+      return plugin.load().then(function () {
+        assert.equal(0, logger.getWarnings().length);
+        return plugin.unload();
+      }).then(function () {
+        assert.equal(2, logger.getWarnings().length);
+      });
+    });
   });
   it('plugin listener crash', function () {
     var map = helper.createCustomMap();
diff --git a/frontend-js/testFiles/apiCalls/plugins/POST_hash=dac1c83fdedde144a3c09424f88c9804&isPublic=false&name=high%20test&url=.%2FtestFiles%2Fplugin-invalid%2Fcrash-unregister.js&version=0.0.1&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/plugins/POST_hash=dac1c83fdedde144a3c09424f88c9804&isPublic=false&name=high%20test&url=.%2FtestFiles%2Fplugin-invalid%2Fcrash-unregister.js&version=0.0.1&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..f7a0f04fa86cb3b632310846ba479a5e56adc5c4
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/plugins/POST_hash=dac1c83fdedde144a3c09424f88c9804&isPublic=false&name=high%20test&url=.%2FtestFiles%2Fplugin-invalid%2Fcrash-unregister.js&version=0.0.1&token=MOCK_TOKEN_ID&
@@ -0,0 +1,8 @@
+{
+    "hash": "dac1c83fdedde144a3c09424f88c9804",
+    "name": "test plugin",
+    "urls": [
+        "./testFiles/plugin-invalid/crash-unregister.js"
+    ],
+    "version": "0.0.1"
+}
\ No newline at end of file
diff --git a/frontend-js/testFiles/plugin-invalid/crash-unregister.js b/frontend-js/testFiles/plugin-invalid/crash-unregister.js
new file mode 100644
index 0000000000000000000000000000000000000000..602ee8f11281e2f2c68847986eec0cc496a264a7
--- /dev/null
+++ b/frontend-js/testFiles/plugin-invalid/crash-unregister.js
@@ -0,0 +1,23 @@
+minervaDefine(function () {
+  return {
+    register: function (minervaObject) {
+      var options = {
+        dbOverlayName: "search",
+        type: "onSearch",
+        callback: function (elements) {
+          console.log("hi there");
+        }
+      };
+      minervaObject.project.map.addListener(options);
+    },
+    unregister: function () {
+      throw new Error("ups")
+    },
+    getName: function () {
+      return "high test";
+    },
+    getVersion: function () {
+      return "0.0.1";
+    }
+  };
+});
\ No newline at end of file