Without marking the error as backoff.Permanent the outer retry re-enters connect(), which resets the daemon state from NeedsLogin to Connecting and makes the tray flicker between the two until the user logs in.