private async Task<TokenResponseDto> RefreshTokenAsync(TokenResponseDto dto)
        {
            var policy = GetRetryPolicy();

            return await policy.ExecuteAsync(async () =>
            {
                var client = new RestClient("https://api.netatmo.com");
                var request = new RestRequest("/oauth2/token");
                request.AddHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
                request.AddParameter("grant_type", dto.RefreshToken);
                request.AddParameter("client_id", _clientId);
                request.AddParameter("client_secret", _clientSecret);

                var token = await client.PostTaskAsync<TokenResponseDto>(request);

                if (token?.AccessToken == null)
                {
                    return null;
                }

                token.Expiration = DateTime.UtcNow.AddSeconds(token.ExpiresIn);
                return token;
            });
        }