public CompletableFuture<String> createMultipartUpload(WriteOptions options, String path) {
        CompletableFuture<String> cf = new CompletableFuture<>();
        CompletableFuture<String> retCf = acquireWritePermit(cf);
        if (retCf.isDone()) {
            return retCf;
        }
        createMultipartUpload0(options, path, cf);
        return retCf;
    }
Put an object to the specified path.

@param options   options (or context) about the write operation
@param path      the path to put the object
@param data      the data to put, it will be released once the finalCf is done
@param attemptCf the CompletableFuture to complete when a single attempt is done
@param finalCf   the CompletableFuture to complete when the write operation is done
s3stream/src/main/java/com/automq/stream/s3/operator/AbstractObjectStorage.java