      */
     private function failover():void
     {
+        // Special-case retry on current URI.
+        if (_previouslyConnected)
+        {
+            _previouslyConnected = false;
+            setReconnecting(true);
+            var timer:Timer = new Timer(1, 1);
+            timer.addEventListener(TimerEvent.TIMER, reconnect);
+            timer.start();
+            return; // Exit early - if this fails the remaining failoverURIs will be tried next.
+        }
+        
+        // General failover handling.
         ++_failoverIndex;
         if ((_failoverIndex + 1) <= failoverURIs.length)
         {

     *  @private
     *  Flag indicating whether this Channel owns the wait guard for managing initial connect attempts.
     */
    private var _ownsWaitGuard:Boolean = false;
    
	/**
	 *  @private

	{
	    if (_connected != value)
	    {
	        if (_connected)
	           _previouslyConnected = true;
	        
	        var event:PropertyChangeEvent = PropertyChangeEvent.createUpdateEvent(this, "connected", _connected, value)
	        _connected = value;
	        dispatchEvent(event);
