                     msg.destination = agent.destination;
                 }
                 msg.operation = CommandMessage.CLUSTER_REQUEST_OPERATION;
-                _currentChannel.sendClusterRequest(new ClusterMessageResponder(msg, this));    
+                _currentChannel.sendInternalMessage(new ClusterMessageResponder(msg, this));
                 _hasRequestedClusterEndpoints = true;                           
             }                    
-
+            unscheduleHeartbeat();
             _currentChannel.send(agent, message);
+            scheduleHeartbeat();
         }
         else
         {

            _connected = value;
            dispatchEvent(event);
            setAuthenticated(value && currentChannel && currentChannel.authenticated, _credentials, false /* Agents also listen for channel disconnects */);
        }
    }
        

            for (i = 0; i < n; i++)
            {
                if (_channels[i] != null)
                {
                    _channels[i].internalSetCredentials(null);
                    if (_channels[i] is PollingChannel)
                        PollingChannel(_channels[i]).disablePolling();
                }
            }
            
            var msg:CommandMessage = new CommandMessage();
