private void ImdbCallback(IAsyncResult ar)
        {
            var httpCb = ar.AsyncState as MyHttpAsyncResult;
            

            if (httpCb != null)
            {
                var imdbResponse = httpCb.HttpWebRequest.EndGetResponse(ar) as HttpWebResponse;
                var context = httpCb.Context;

                //do stuff

                if (imdbResponse.StatusCode == HttpStatusCode.OK)
                {
                    JavaScriptSerializer jsonMaster = new JavaScriptSerializer();
                    IMDbObj imdbObj = jsonMaster.Deserialize<IMDbObj>(new StreamReader(imdbResponse.GetResponseStream()).ReadToEnd());
                    if (imdbObj != null && imdbObj.Response == "True")
                    {
                        if (imdbObj.Plot != "N/A")
                        {
                            string bingRequestUri = String.Format("http://api.bing.net/json.aspx?AppId={0}&Query={1}&Sources=Translation&Version=2.2&Translation.SourceLanguage={2}&Translation.TargetLanguage={3}", BING_KEY, imdbObj.Plot, "en", "pt");

                            
                            //for (int retries = 0; retries < MAX_RETRIES ; ++retries)
                            //{

                                HttpWebRequest bingRequest = (HttpWebRequest)WebRequest.Create(bingRequestUri);

                                var bAR = new MyHttpAsyncResult(bingRequest, httpCb.Context, (_)=>
                                                                                                           {
                                                                                                               context.Response.StatusCode = (int)HttpStatusCode.OK;
                                                                                                               context.Response.ContentType = "text/plain; charset=utf-8"; // In the final version use "application/json; charset=utf-8"
                                                                                                               string jsonData = jsonMaster.Serialize(imdbObj);
                                                                                                               var writer = new StreamWriter(context.Response.OutputStream);
                                                                                                               writer.Write(jsonData);
                                                                                                               writer.Flush();

                                                                                                               httpCb.IsCompleted = true;
                                                                                                               ((ManualResetEvent)httpCb.AsyncWaitHandle).Set();
                                                                                                               httpCb.Callback(httpCb);
                                                                                                               return;
                                                                                                           },
                                                                httpCb.AsyncState);

                                var bingResponseAR = bingRequest.BeginGetResponse((a) =>
                                                                                      {
                                                                                          var final =
                                                                                              a.AsyncState as
                                                                                              MyHttpAsyncResult;

                                                                                          var bingResponse = final.HttpWebRequest.EndGetResponse(a) as HttpWebResponse;

                                                                                          if (bingResponse.StatusCode == HttpStatusCode.OK)
                                                                                          {

                                                                                              BingObj bingObj = jsonMaster.Deserialize<BingObj>(new StreamReader(bingResponse.GetResponseStream()).ReadToEnd());
                                                                                              if (bingObj.SearchResponse.Translation != null)
                                                                                              {
                                                                                                  imdbObj.Plot = bingObj.SearchResponse.Translation.Results[0].TranslatedTerm;
                                                                                                  
                                                                                                  //Ends for
                                                                                                  final.IsCompleted =
                                                                                                      true;
                                                                                                  ((ManualResetEvent)
                                                                                                   final.AsyncWaitHandle)
                                                                                                      .Set();
                                                                                                  final.Callback(final);
                                                                                                  return;
                                                                                              }
                                                                                          }


                                                                                      }, bAR);

                                //2
                                //HttpWebResponse bingResponse = (HttpWebResponse)bingRequest.GetResponse();


                                //3
                                //Thread.Sleep(1000 + 1000 * retries + _rand.Next(2000));
                            //}
                        }
                        
                    }
                }
                else //TODO: change this
                {
                    ReplyError(HttpStatusCode.NotFound, "Movie not found", context.Response);   
                }
                

                
            }
            throw new NotImplementedException();

            

        }
        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            //if (context.Request.Path != "/")
            //{
            //    ReplyError(HttpStatusCode.NotFound, "Resource does not exist", context.Response);
            //    return new HttpAsyncResult();
            //}

            //if (context.Request.QueryString["t"] == null)
            //{
            //    //context.Request.QueryString["t"] = "matrix";
            //    ReplyError(HttpStatusCode.BadRequest, "Requests must indicate a movie via parameter <b>t=<i>movie</i></b>", context.Response);
            //    return;
            //}

            var t = "matrix";

            string imdbRequestUri = null;
            if (context.Request.QueryString["y"] == null)
            {
                imdbRequestUri = String.Format("http://imdbapi.com/?t={0}", t);
            }
            else
            {
                imdbRequestUri = String.Format("http://imdbapi.com/?t={0}&y={1}", t, context.Request.QueryString["y"]);
            }

            HttpWebRequest imdbRequest = (HttpWebRequest)WebRequest.Create(imdbRequestUri);

            var httpAR = new MyHttpAsyncResult(imdbRequest, context, cb, extraData);

            imdbRequest.BeginGetResponse(ImdbCallback, httpAR);



            //1
            //HttpWebResponse imdbResponse = (HttpWebResponse)imdbRequest.GetResponse();


            return httpAR;
        }