public CompletableFuture<Boolean> deleteFile(String containerName, String fileName) throws BlobStorageException {
    return FutureUtils.retry(() -> {
      CompletableFuture<Boolean> completableFuture = new CompletableFuture<>();
      BlockBlobAsyncClient blobAsyncClient = getBlockBlobAsyncClient(containerName, fileName, false);
      return blobAsyncClient.exists().toFuture().thenCompose((response) -> {
        if (response) {
          blobAsyncClient.delete().toFuture().thenAccept((result) -> completableFuture.complete(true));
        } else {
          completableFuture.complete(false);
        }
        return completableFuture;
      });
    }, retries, retryPredicate, this::onRetriableError, this::onError);
  }
Delete a file from blob storage asynchronously, if it exists.
@param containerName name of the container containing file to delete.
@param fileName name of the file to delete.
@return a {@link CompletableFuture} of type {@link Boolean} that will eventually complete successfully when the file
        is deleted or will complete exceptionally if an error occurs.
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/StorageClient.java