 
     public function postMessage (msg :UpstreamMessage) :void
     {
-        if (_writer == null) {
+        _outq.push(msg);
+        if (_writer != null) {
+            sendPendingMessages(null);
+
+        } else {
             log.warning("Posting message prior to opening socket", "msg", msg);
         }
-        _outq.push(msg);
     }
 
     /**


    protected var _outq :Array = new Array();
    protected var _writer :Timer;
    protected var _tqsize :int = 0;

    protected const log :Log = Log.getLog(this);


        while (_outq.length > 0) {
            // if we've exceeded our throttle, stop for now
            if (_client.getOutgoingMessageThrottle().throttleOp()) {
                if (!_notedThrottle) {
                    log.info("Throttling outgoing messages", "queue", _outq.length,
                             "throttle", _client.getOutgoingMessageThrottle());
                    _notedThrottle = true;
                }
                return;
            }
            _notedThrottle = false;

            // grab the next message from the queue and send it
            var msg :UpstreamMessage = (_outq.shift() as UpstreamMessage);
