private static async Task <TokenResponse> RequestTokenAsync(DeviceAuthorizationResponse authorizeResponse) { var disco = await _cache.GetAsync(); if (disco.IsError) { throw new Exception(disco.Error); } var client = new HttpClient(); while (true) { var response = await client.RequestDeviceTokenAsync(new DeviceTokenRequest { Address = disco.TokenEndpoint, ClientId = "device", DeviceCode = authorizeResponse.DeviceCode }); if (response.IsError) { if (response.Error == OidcConstants.TokenErrors.AuthorizationPending || response.Error == OidcConstants.TokenErrors.SlowDown) { Console.WriteLine($"{response.Error}...waiting."); await Task.Delay(authorizeResponse.Interval * 1000); } else { throw new Exception(response.Error); } } else { return(response); } } }