private boolean shouldRefresh(GrantedOAuth2AccessToken token) {
        return !token.isValid(Instant.now().plus(refreshBefore));
    }
Issues an {@code OAuth 2.0 Access Token} and cache it in memory and returns the cached one
until the token is considered valid. It automatically refreshes the cached token once it's
considered expired and returns the refreshed one.

<p>Renewing a token is guaranteed to be atomic even though the method is invoked by multiple threads.

<p>It optionally tries to load an access token from
{@link OAuth2AuthorizationGrantBuilder#fallbackTokenProvider(Supplier)}
which supposedly gets one by querying to a longer term storage, before it makes a request
to the authorization server.

<p>One may choose to provide a hook which gets executed every time a token is issued or refreshed
from the authorization server to store the renewed token to a longer term storage via
{@link OAuth2AuthorizationGrantBuilder#newTokenConsumer(Consumer)} .
oauth2/src/main/java/com/linecorp/armeria/client/auth/oauth2/DefaultOAuth2AuthorizationGrant.java