anchor.diff:      let getEnvValue (name:string) =
           let v = Environment.GetEnvironmentVariable(name.ToUpperInvariant())
           // under mono, env vars are case sensitive
  -        if v = null then Environment.GetEnvironmentVariable(name.ToLowerInvariant()) else v
  +        if isNull v then Environment.GetEnvironmentVariable(name.ToLowerInvariant()) else v
       let bypassList =
           let noproxy = getEnvValue "NO_PROXY"
           if String.IsNullOrEmpty(noproxy) then [||] else
  
positive.code:     let getProxy (scheme:string) =
          let envVarName = sprintf "%s_PROXY" (scheme.ToUpperInvariant())
          let envVarValue = getEnvValue envVarName
          if envVarValue = null then 
              None 
          else
              match Uri.TryCreate(envVarValue, UriKind.Absolute) with
  
negative.code:         | _ -> map
  
      [ "http"; "https" ]
      |> List.fold addProxy Map.empty
  
  let calcEnvProxies = lazy (envProxies())
  
  let private proxies = System.Collections.Concurrent.ConcurrentDictionary<_,_>()
  
  let getDefaultProxyFor url =
      let uri = new Uri(url)
      let key = uri.Host,uri.Port,uri.Scheme
      match proxies.TryGetValue key with
      | true,proxy -> proxy
      | _ ->
          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
  
          let proxy =
              match calcEnvProxies.Force().TryFind uri.Scheme with
              | Some p -> if p.GetProxy(uri) <> uri then p else getDefault()
              | None -> getDefault()
          proxies.TryAdd(key,proxy) |> ignore
          proxy
  
  let inline createWebClient(url,auth:Auth option) =
      let client = new WebClient()
  