I agree, that at this level, raising the error is as far as the responsibility of this code goes, since, at the moment, it is only tangentially responsible for the whole transaction. Ideally, I'd like to see `apply` completely removed from `Puppet::Resource::Catalog` and all of this coordination activity moved to `Puppet::Configurer` (or elsewhere). That, however, is a much larger change and presents all sorts of backwards compatibility obstacles (as I found when I tried to move part of the `relationship_graph` creation off of this class).

Modifying `Puppet::Configurer` to make it clearer that it will have a failed report when there is an error might be a good change too, but not critical.