I don't think that `git_object_type(obj)` can ever return an error here, can it? I would expect either the initial `git_object_lookup` to fail or the `git_tag_target` to fail if this is not going to be a valid object. This makes `enqueue_tag` returns the `git_otype` value of the final object in the tag chain which then propagates up to the parent (where it is not used, but does get stored into `error` for a bit, which seems like it could cause confusion).