In v5.15, the ClientCredentialsTokenProvider gets an initial token, but once it is expired, it does not get a new one.
This was introduced in 6aaaa90 - because the abstract provider does not distinguish between grants, in some cases not having a refresh token means "token was invalidated" and in other cases it means "there's no refresh token in this grant".