diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
index bfed09c23..444fb948a 100644
--- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
+++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
@@ -366,6 +366,16 @@ module.exports = function(RED) {
         }
     }
 
+    function updateStatus(node, allNodes) {
+        let setStatus = setStatusDisconnected
+        if(node.connecting) {
+            setStatus = setStatusConnecting
+        } else if(node.connected) {
+            setStatus = setStatusConnected
+        }
+        setStatus(node, allNodes)
+    }
+
     function setStatusDisconnected(node, allNodes) {
         if(allNodes) {
             for (var id in node.users) {
@@ -697,13 +707,17 @@ module.exports = function(RED) {
             if (Object.keys(node.users).length === 1) {
                 if(node.autoConnect) {
                     node.connect();
+                    //update nodes status
+                    setTimeout(function() {
+                        updateStatus(node, true)
+                    }, 1)
                 }
             }
         };
 
-        node.deregister = function(mqttNode,done) {
+        node.deregister = function(mqttNode, done, autoDisconnect) {
             delete node.users[mqttNode.id];
-            if (!node.closing && node.connected && Object.keys(node.users).length === 0) {
+            if (autoDisconnect && !node.closing && node.connected && Object.keys(node.users).length === 0) {
                 node.disconnect();
             }
             done();
@@ -1220,7 +1234,7 @@ module.exports = function(RED) {
                     } else {
                         node.brokerConn.unsubscribe(node.topic,node.id, removed);
                     }
-                    node.brokerConn.deregister(node, done);
+                    node.brokerConn.deregister(node, done, removed);
                     node.brokerConn = null;
                 } else {
                     done();