     
     /**
      *  @private
+     *  Cleanup following a connect or failover attempt.
+     */
+    private function connectCleanup():void
+    {
+        // If we own the wait guard for initial Channel connects release it.
+        if (_ownsWaitGuard)
+        {
+            _ownsWaitGuard = false;
+            FlexClient.getInstance().waitForFlexClientId = false; // Allow other Channels to connect.
+        }
+        
+        _connecting = false;
+        
+        setReconnecting(false); // Ensure the reconnecting flag is turned off; failover is not being attempted.
+    }
+    
+    /**
+     *  @private
      *  This method is invoked by a timer from failover() and it works around a 
      *  reconnect issue with NetConnection based channels by invoking 
      *  internalConnect() after a slight delay.

        }
        else // Not attempting failover.
        {
    	    // If we own the wait guard for initial Channel connects release it.
    	    if (_ownsWaitGuard)
    	    {
    	        _ownsWaitGuard = false;
    	        FlexClient.getInstance().waitForFlexClientId = false; // Allow other Channels to connect.
    	    }
            
            _connecting = false;
        }
        
        if (reconnecting)

	          
	    dispatchEvent(ChannelEvent.createEvent(ChannelEvent.CONNECT, this, reconnecting));
	                                                            
        connectCleanup();
	}
	
	/**
