@Override
    public HttpResponse execute(ClientRequestContext ctx, HttpRequest req) throws Exception {
        final CompletionStage<HttpResponse> future =
                authorizationGrant.getAccessToken().handle((token, cause) -> {
                    if (cause != null) {
                        return HttpResponse.ofFailure(cause);
                    }

                    final HttpRequest newReq = req.withHeaders(req.headers().toBuilder().set(
                            HttpHeaderNames.AUTHORIZATION, token.authorization()).build());
                    ctx.updateRequest(newReq);
                    return executeWithFallback(unwrap(), ctx,
                                               (context, cause0) -> HttpResponse.ofFailure(cause0),
                                               newReq, true);
                });
        return HttpResponse.of(future);
    }
Creates a new instance that decorates the specified {@link HttpClient} with
an OAuth 2.0 Authorization Grant flow.
oauth2/src/main/java/com/linecorp/armeria/client/auth/oauth2/OAuth2Client.java