diff --git a/red/nodes/registry.js b/red/nodes/registry.js
index 19b174c29..413d37dbf 100644
--- a/red/nodes/registry.js
+++ b/red/nodes/registry.js
@@ -419,7 +419,18 @@ function loadNodesFromModule(moduleDir,pkg) {
  */
 function loadNodeConfig(file,module,name) {
     var id = crypto.createHash('sha1').update(file).digest("hex");
+    if (module && name) {
+        var newid = crypto.createHash('sha1').update(module+":"+name).digest("hex");
+        var existingInfo = registry.getNodeInfo(id);
+        if (existingInfo) {
+            // For a brief period, id for modules were calculated incorrectly.
+            // To prevent false-duplicates, this removes the old id entry
+            registry.removeNode(id);
+            registry.saveNodeList();
+        }
+        id = newid;
 
+    }
     var info = registry.getNodeInfo(id);
     
     var isEnabled = true;
diff --git a/red/server.js b/red/server.js
index 9af7413c0..2c5f36270 100644
--- a/red/server.js
+++ b/red/server.js
@@ -242,7 +242,7 @@ function installModule(module) {
             if (err) {
                 var lookFor404 = new RegExp(" 404 .*"+module+"$","m");
                 if (lookFor404.test(stdout)) {
-                    util.log("[red] Installation of module "+module+" failed: not found");
+                    util.log("[red] Installation of module "+module+" failed: module not found");
                     var e = new Error();
                     e.code = 404;
                     reject(e);
@@ -324,7 +324,10 @@ function start() {
                     for (i in missingModules) {
                         if (missingModules.hasOwnProperty(i)) {
                             util.log(" - "+i+": "+missingModules[i].join(", "));
-                            promises.push(installModule(i));
+                            installModule(i).otherwise(function(err) {
+                                // Error already reported. Need the otherwise handler
+                                // to stop the error propagating any further
+                            });
                         }
                     }