I think there is a third case where this callback won't be invoked, too. If `git_odb_stream_write` returns an error, then it is expected that the caller will jump straight to calling `git_odb_stream_free` and bypass `git_odb_stream_finalize_write`.

I think the best way to document this for a backend author is probably to add a comment on the `(*free)(...)` callback explaining that free may be called at any point without calling finalize_write if the streamed write needs to be aborted for any reason. What do you think?