         {
             var msg:CommandMessage = new CommandMessage();
             msg.operation = CommandMessage.DISCONNECT_OPERATION;
-            internalSend(new HTTPFireAndForgetResponder(msg));
+            internalSend(new MessageResponder(null, msg, null));
         }
         // Shutdown locally.
         setConnected(false);

        callRequestProcessedCallback(event);
        callEventCallback(completeCallback, event);
    }
}

/**
 *  @private
 *  This class provides a way to synchronize polling with a subscribe or
 *  unsubscribe request.  It is constructed in response to a consumer sending
 *  either a subscribe or unsubscribe command message.  If a successfull
 *  subscribe/unsubscribe is made this responder will inform the channel
 *  appropriately.
 *
 *  See the PollSyncMessageResponder in NetConnectionChannel - the prototype.
 */
class PollSyncHTTPMessageResponder extends HTTPMessageResponder
{
    //--------------------------------------------------------------------------
    //
    // Constructor
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     *  Constructs a PollSyncHTTPMessageResponder.
     *
     *  @param agent The associated MessageAgent.
     *
     *  @param msg The subscribe or unsubscribe message.
     *
     *  @param channel The Channel used to send the message.
     */
    public function PollSyncHTTPMessageResponder
        (agent:MessageAgent, msg:IMessage, channel:HTTPChannel)
    {
        super(agent, msg, channel);
    }

    //--------------------------------------------------------------------------
    //
    // Overridden Protected Methods
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     */
    override protected function resultHandler(response:IMessage):void
    {
        super.resultHandler(response);
        if ((response is AsyncMessage) && (AsyncMessage(response).correlationId == message.messageId))
        {
            // notify the channel
            var cmd:CommandMessage = CommandMessage(message);
            switch (cmd.operation)
            {
                case CommandMessage.SUBSCRIBE_OPERATION:
                    HTTPChannel(channel).enablePolling();
                break;

                case CommandMessage.UNSUBSCRIBE_OPERATION:
                    HTTPChannel(channel).disablePolling();
                break;
            }
        }
    }
}

/**
 *  Helper class for sending a fire-and-forget disconnect message.
 */
class HTTPFireAndForgetResponder extends MessageResponder
{
    public function HTTPFireAndForgetResponder(message:IMessage)
    {
        super(null, message, null);
    }
}

    /**
     *  @private
     */
    override protected function getDefaultMessageResponder(agent:MessageAgent, msg:IMessage):MessageResponder
    {
        return new HTTPMessageResponder(agent, msg, this);
