protected override void RunWebRequest(QueueManager qm)
        {
            RequestState requestState = new RequestState();

            requestState.OperationType = OperationType;

            string jsonMessage  = (publishAsIs) ? PublishMessage.ToString() : Helpers.JsonEncodePublishMsg(PublishMessage, this.PubNubInstance.PNConfig.CipherKey, this.PubNubInstance.JsonLibrary, this.PubNubInstance.PNLog);
            string jsonMetadata = string.Empty;

            if (this.Metadata != null)
            {
                jsonMetadata = Helpers.JsonEncodePublishMsg(this.Metadata, "", this.PubNubInstance.JsonLibrary, this.PubNubInstance.PNLog);
            }

            if (UsePostMethod)
            {
                requestState.httpMethod = HTTPMethod.Post;
                requestState.POSTData   = jsonMessage;
            }
            Uri request = BuildRequests.BuildPublishRequest(
                this.PublishChannel,
                jsonMessage,
                this.ShouldStoreInHistory,
                jsonMetadata,
                publishCounter,
                this.PublishTtl,
                UsePostMethod,
                this.ReplicateMessage,
                this.PubNubInstance,
                this.QueryParams
                );

            base.RunWebRequest(qm, request, requestState, this.PubNubInstance.PNConfig.NonSubscribeTimeout, 0, this);
        }