anchor.diff:      let getProxy (scheme:string) =
           let envVarName = sprintf "%s_PROXY" (scheme.ToUpperInvariant())
           let envVarValue = getEnvValue envVarName
  -        if envVarValue = null then 
  +        if isNull envVarValue then 
               None 
           else
               match Uri.TryCreate(envVarValue, UriKind.Absolute) with
  
positive.code:         | _ -> map
  
      [ "http"; "https" ]
      |> List.fold addProxy Map.empty 
  
  let getDefaultProxyFor url =
      let uri = new Uri(url)
      let getDefault () =
          let result = WebRequest.GetSystemWebProxy()
          let address = result.GetProxy(uri)
  
          if address = uri then null else
          let proxy = new WebProxy(address)
          proxy.Credentials <- CredentialCache.DefaultCredentials
          proxy.BypassProxyOnLocal <- true
          proxy
  
      match envProxies().TryFind uri.Scheme with
      | Some p -> if p.GetProxy(uri) <> uri then p else getDefault()
      | None -> getDefault()
  
  let inline createWebClient(url,auth:Auth option) =
      let client = new WebClient()
  
negative.code:         //ONLY after a 401
          //client.Credentials <- new NetworkCredential(auth.Username,auth.Password)
  
          //so use THIS instead to send credentials RIGHT AWAY
          let credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password))
          client.Headers.[HttpRequestHeader.Authorization] <- sprintf "Basic %s" credentials
      | Some(Token token) -> client.Headers.[HttpRequestHeader.Authorization] <- sprintf "token %s" token
  