@Override
    public final CompletableFuture<HttpResponse> read(Executor fileReadExecutor, ByteBufAllocator alloc) {
        requireNonNull(fileReadExecutor, "fileReadExecutor");
        requireNonNull(alloc, "alloc");

        return readAttributes(fileReadExecutor)
                .thenApply(attrs -> read(fileReadExecutor, alloc, attrs))
                .exceptionally(cause -> HttpResponse.ofFailure(Exceptions.peel(cause)));
    }
Generates the {@link ResponseHeaders} from the specified {@link HttpFileAttributes}.

@return the {@link ResponseHeaders}, or {@code null} if {@code attrs} is {@code null}.
core/src/main/java/com/linecorp/armeria/server/file/AbstractHttpFile.java