public IAsyncResult BeginProxyRequest(AsyncCallback callback, object extraData)
        {
            ExTraceGlobals.ProxyCallTracer.TraceDebug((long)this.GetHashCode(), "ProxyToEwsEventHandler.ProxyEvent");
            if (base.UserContext != null)
            {
                int num;
                base.UserContext.DangerousBeginUnlockedAction(false, out num);
                if (num != 1)
                {
                    ExWatson.SendReport(new InvalidOperationException("Thread held more than 1 lock before async operation"), ReportOptions.None, null);
                }
            }
            AsyncEnumerator asyncEnumerator = new AsyncEnumerator(callback, extraData, new Func <AsyncEnumerator, IEnumerator <int> >(this.ProcessProxyRequest), false);

            this.asyncResult = asyncEnumerator.AsyncResult;
            asyncEnumerator.Begin();
            return(this.asyncResult);
        }