default CompletableFuture<Void> undeleteBlob(String blobId, String serviceId) {
    CompletableFuture<Void> future = new CompletableFuture<>();
    undeleteBlob(blobId, serviceId, CallbackUtils.fromCompletableFuture(future), null);
    return future;
  }
Requests for a blob to be undeleted asynchronously and returns a future that will eventually contain information
about whether the request succeeded or not.
@param blobId The ID of the blob that needs to be undeleted.
@param serviceId The service ID of the service undeleting the blob. This can be null if unknown.
@return A future that would contain information about whether the undelete succeeded or not, eventually.
ambry-api/src/main/java/com/github/ambry/router/Router.java