Why exactly would you call runuserinterface again? btw UrlTransfer isn't allowed to run in the render thread in SceneGraph, so You'll probably want to ultimately move the code to the end in presetup is it?
A better flow would be -
check if the server is up and accessible
If the server is down, exit
Get the user information you need from the server
If the user exists start main program
If the user doesn't exist, run through the linking and account setup
If the account setup is successful then you already have the user information you needed and the server is accessible so start the main program
If the account setup failed, exit.
screen = CreateObject("roSGScreen")
port = CreateObject("roMessagePort")
screen.setMessagePort(port)
scene = screen.CreateScene("BusySpinnerExample")
screen.show()