It is outside the scope of this review but I see a growing number of provider methods wrapped in caching.

It could be nice to have cache handling and administration implemented as [a central part of the provider](https://github.com/ding2/ding_provider/blob/master/ding_provider.module#L209) on a case by case basis instead of being tacked onto individual calls as we go along.