 package com.threerings.presents.client {
 
 import flash.errors.IOError;
-
 import flash.events.Event;
 import flash.events.IOErrorEvent;
+import flash.events.TimerEvent;
 
 import flash.net.Socket;
-
 import flash.utils.ByteArray;
 import flash.utils.Endian;
+import flash.utils.Timer;
 
 import com.threerings.util.Log;
 

                return false;
            }
            if (_portIdx != 0) {
                _client.reportLogonTribulations(
                    new LogonError(AuthCodes.TRYING_NEXT_PORT, true));

                removeListeners();
            }

            return;
        }

        // otherwise, this would be the AuthResponse to our logon attempt
        var rsp :AuthResponse = (msg as AuthResponse);
        var data :AuthResponseData = rsp.getData();
        if (data.code !== AuthResponseData.SUCCESS) {
