//this is a test
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            var urlRequest = new NSMutableUrlRequest
            {
                HttpMethod           = request.Method.Method,
                Url                  = NSUrl.FromString(request.RequestUri.AbsoluteUri),
                AllowsCellularAccess = true,
            };


            var dictionary = new NSMutableDictionary();

            if (request.Headers != null && request.Headers.Count() > 0)
            {
                foreach (var item in request.Headers)
                {
                    dictionary.SetValueForKey((NSString)item.Value.First(), (NSString)item.Key);
                }
            }

            if (request.Content != null)
            {
                foreach (var item in request.Content.Headers)
                {
                    dictionary.SetValueForKey((NSString)item.Value.First(), (NSString)item.Key);
                }
            }

            urlRequest.Headers = dictionary;

            if (request.Content != null)
            {
                using (Stream requestStream = await request.Content.ReadAsStreamAsync())
                {
                    urlRequest.Body = NSData.FromStream(requestStream);
                }
            }

            try
            {
                NSUrlAsyncResult response = await NSUrlConnection.SendRequestAsync(urlRequest, NSOperationQueue.MainQueue);

                NSHttpUrlResponse httpResponse = response.Response as NSHttpUrlResponse;

                HttpContent responseContent = null;

                if (response.Data == null)
                {
                    responseContent = new StringContent("");
                }

                else
                {
                    responseContent = new StreamContent(response.Data.AsStream());
                }

                HttpResponseMessage responseMessage = new HttpResponseMessage
                {
                    Content        = responseContent,
                    RequestMessage = request,
                    StatusCode     = (HttpStatusCode)int.Parse(httpResponse.StatusCode.ToString())
                };

                var headers = (from p in httpResponse.AllHeaderFields.Keys
                               let key = p.ToString()
                                         let val = httpResponse.AllHeaderFields[p].ToString()
                                                   orderby key
                                                   select new KeyValuePair <string, string>(key, val)).ToList();

                SetHeaders(headers, responseMessage);

                return(responseMessage);
            }

            catch (NSErrorException ex)
            {
                throw new HttpRequestException(ex.Error.LocalizedDescription, ex);
            }

            catch (Exception ex)
            {
                throw new HttpRequestException("An error occurred while sending the request.", ex);
            }
        }