Prevents deep recursion in the event of connection failure

The code isn't as readable as I like, but this is the only way I can seem to eliminate deep recursion if there is a connection failure.  This eliminates the extra call stack layer when we need to reconnect using `goto &func` but this requires setting up @_ manually above.
basically goto &func exits the current call stack frame and creates a new one, aliasing @_ and entering function func.  The advantage though is that you get a clean function call, and no additional stack depth/memory usage.  The disadvantage is that it looks ugly :-P