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.
and this looks wierder because it isn't a goto but a continuation :-P