private IPromise<AuthenticationSchemes> CheckAuthentication(Vault vault, bool async) { var result = new Promise<AuthenticationSchemes>(); if (vault.Authentication == AuthenticationSchemes.None && _conn.Version >= 11) { var hReq = (HttpWebRequest)System.Net.WebRequest.Create(vault.Url); hReq.Credentials = null; hReq.UnsafeAuthenticatedConnectionSharing = true; hReq.Method = "HEAD"; var req = new WebRequest(hReq, CompressionType.none); result.CancelTarget( req.Execute(async) .Progress((p, m) => result.Notify(p, m)) .Done(r => { vault.Authentication = AuthenticationSchemes.Anonymous; result.Resolve(vault.Authentication); }).Fail(ex => { var webEx = ex as HttpException; if (webEx != null && webEx.Response.StatusCode == HttpStatusCode.Unauthorized) { vault.Authentication = req.CheckForNotAuthorized(webEx.Response); result.Resolve(vault.Authentication); } else { result.Reject(ex); } })); } else { result.Resolve(AuthenticationSchemes.Anonymous); } return result; }