Cases were e.g. an object would use a material, and this material would use this object (e.g. through a driver), even if both those data-blocks are technically unused, they would remain forever since they were not detected as such. Now this is properly detected and purged as part of the 'recursive purge' operation.