public async Task <Balance> GetBalanceAsync(CancellationToken cancellationToken = default)
        {
            // Sends the request to the Verifalia API

            var restClient = _restClientFactory.Build();

            using var response = await restClient
                                 .InvokeAsync(HttpMethod.Get, "credits/balance", cancellationToken : cancellationToken)
                                 .ConfigureAwait(false);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return(await response
                       .Content
                       .DeserializeAsync <Balance>(restClient)
                       .ConfigureAwait(false));
            }

            // An unexpected HTTP status code has been received at this point

            var responseBody = await response
                               .Content
#if NET5_0_OR_GREATER
                               .ReadAsStringAsync(cancellationToken)
#else
                               .ReadAsStringAsync()
#endif
                               .ConfigureAwait(false);

            throw new VerifaliaException($"Unexpected HTTP response: {(int)response.StatusCode} {responseBody}");
        }