I got around it without the circuit breaker by using a pattern like this:
return authorizedClientManager.authorize(oauth2Request)
.map(authorizedClient -> exchange.mutate()
.request(r -> r.headers(
headers -> headers.set(HttpHeaders.AUTHORIZATION,
"Bearer " + authorizedClient.getAccessToken().getTokenValue())))
.build())
.onErrorResume(e -> Mono.empty()) // Ignore the error
.defaultIfEmpty(exchange) // Then continue if an occurred, allowing routed request to fail with a 401
.flatMap(chain::filter);