      */
     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 var resourceManager:IResourceManager = ResourceManager.getInstance();   
	
	/**
	 *  @private
	 *  Indicates whether this channel should be connected to its endpoint.
	 *  This flag is used to control when fail over should be attempted.
	 */
	private var _shouldBeConnected:Boolean;	
 

    //--------------------------------------------------------------------------
    //
    // Properties
    // 

     */
    private function shouldAttemptFailover():Boolean
    {
        return (_shouldBeConnected && 
               (_previouslyConnected || ((_failoverURIs != null) &&  (_failoverURIs.length > 0))));  
    } 
    
    /**
