private Callback<String> routerPutBlobCallback(BlobInfo blobInfo) {
      return buildCallback(frontendMetrics.postRouterPutBlobMetrics, blobId -> {
        setSignedIdMetadataAndBlobSize(blobInfo.getBlobProperties());
        restRequest.getMetricsTracker().setBytesTransferred(restRequest.getBytesReceived());
        idConverter.convert(restRequest, blobId, idConverterCallback(blobInfo));
      }, uri, LOGGER, finalCallback);
    }
After {@link Router#putBlob} finishes, call {@link IdConverter#convert} to convert the returned ID into a format
that will be returned in the "Location" header.
@param blobInfo the {@link BlobInfo} to make the router call with.
@return a {@link Callback} to be used with {@link Router#putBlob}.
ambry-frontend/src/main/java/com/github/ambry/frontend/PostBlobHandler.java