public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            var result = new AsyncResult()
            {
                AsyncState = extraData,
                IsCompleted = false,
                AsyncWaitHandle = new ManualResetEvent(false),
                Callback = cb
            };

            ProcessRequestIterator(context).Run().ContinueWith((t) => { result.OperationComplete(); });

            return result;
        }