Maybe you can use a finalizer?  This was added in Puppet 3.4.0 too: https://github.com/puppetlabs/puppet/pull/1851, though we wouldn't really want to be dependent on it (can we disable prefetch pre-3.4.0 and only enable on later versions?).  There was a thread on puppet-dev too a little while back about this subject.