private Callback<GetBlobResult> routerCallback() {
      return buildCallback(metrics.headBlobRouterMetrics, result -> {
        LOGGER.debug("Head {}", getRequestPath(restRequest).getOperationOrBlobId(false));
        accountAndContainerInjector.ensureAccountAndContainerInjected(restRequest,
            result.getBlobInfo().getBlobProperties(), metrics.headBlobMetricsGroup);
        securityService.processResponse(restRequest, restResponseChannel, result.getBlobInfo(),
            securityProcessResponseCallback());
      }, restRequest.getUri(), LOGGER, (r, e) -> {
        // Even we failed in router operations, we already used some of the resources in router,
        // so let's record the charges for this request.
        securityService.processRequestCharges(restRequest, restResponseChannel, null);
        finalCallback.onCompletion(null, e);
      });
    }
After {@link Router#getBlob} finishes, call {@link SecurityService#processResponse}.
@return a {@link Callback} to be used with {@link Router#getBlob}.
ambry-frontend/src/main/java/com/github/ambry/frontend/HeadBlobHandler.java