@Override
  public AsyncClient<Object> enrich(AsyncClient<Object> client) {
    return (request, options, context) -> {
      FeignContext feignContext = new FeignContext(request);

      Observation observation =
          FeignObservationDocumentation.DEFAULT
              .observation(
                  this.customFeignObservationConvention,
                  DefaultFeignObservationConvention.INSTANCE,
                  () -> feignContext,
                  this.observationRegistry)
              .start();

      try {
        return client
            .execute(feignContext.getCarrier(), options, context)
            .whenComplete((r, ex) -> finalizeObservation(feignContext, observation, ex, r));
      } catch (FeignException ex) {
        finalizeObservation(feignContext, observation, ex, null);

        throw ex;
      }
    };
  }
Wrap feign {@link Client} with metrics.
micrometer/src/main/java/feign/micrometer/MicrometerObservationCapability.java