void ProcessNext(IAsyncResult result)
        {
            PollContext context = (PollContext)result.AsyncState;

            if (!context.PollAborted)
            {
                try
                {
                    context.Processor(result, context);
                }
                catch (Exception e)
                {
                    this.pollContext = null;
                    context.Close();
                    if (!context.PollAborted)
                    {
                        this.FaultAllSubscriptions(e);
                    }
                }
            }
            else
            {
                this.pollContext = null;
                context.Close();
            }
        }
        void ProcessPollRead(IAsyncResult result, PollContext context)
        {
            int read = context.ResponseStream.EndRead(result);

            this.ParseMultipartMime(read, context.ParsingContext);
            if (read > 0)
            {
                this.EnsureRoomInBuffer();
                context.ResponseStream.BeginRead(this.buffer, this.offset + this.count, this.buffer.Length - this.offset - this.count, this.processNext, context);
            }
            else
            {
                context.Close();
                this.pollContext = null;
                if (this.subscriptions.Count > 0)
                {
                    this.StartPoll();
                }
            }
        }