@jpartlow this change will work for package providers in core, but not modules, e.g. https://github.com/bjoernalbers/puppet-homebrew/blob/master/lib/puppet/provider/package/homebrew.rb#L47-L49. I'm not sure if we care?

From what I can tell the `Puppet::Provider::Package#query` method is only called by the `#properties` method in the same class. We could create a new query method that does the validate check:

<pre>
def query_wrapper
  validate_resource
  query
end

def properties
  if @property_hash.empty?
    @property_hash = query_wrapper || {:ensure => :absent}
</pre>

and then leave the core & custom package providers as they were?