protected override async Task <HttpResponseMessage> SendAsync(
            HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (!_authenticator.Token.Valid)
            {
                var authenticated = await _authenticator.Authenticate(cancellationToken).ConfigureAwait(false);

                if (authenticated)
                {
                    await _authenticator.ReassignToken(cancellationToken).ConfigureAwait(false);
                }
            }

            _authenticator.ApplyAuthentication(request);

            return(await base.SendAsync(request, cancellationToken).ConfigureAwait(false));
        }