Could we pass the instance in here? This would allow the URL logic to live in one place, like this:

```js
function getCacheKey(instance, opts){
  var url = _.isFunction(instance.url) ? instance.url() : instance.url;
  if(opts && opts.data){
    return url + "?" + JSON.stringify(opts.data);
  }
  return url;
}
```

We could then remove L65 and L116.