docs: function processHttpConfigEtagValue (httpConfig) {
      var etagValue = httpConfig.etagCache
      var etagValueType = typeof etagValue
      var etagCacheConfig = {}
  
      // Evaluate function first
      if (etagValueType === 'function') {
        etagValue = etagValue(httpConfig)
        etagValueType = typeof etagValue
      }
  
      // Plain, cache, or itemCache objects
      if (etagValueType === 'object') {
        var id, itemKey
  
        if (etagValue.isCache) {
          id = etagValue.info().id
          itemKey = generateCacheItemKey(httpConfig)
        } else if (etagValue.isItemCache) {
          id = etagValue.info().id
          itemKey = etagValue.info().itemKey
        } else {
          id = etagValue.id
          itemKey = etagValue.itemKey || generateCacheItemKey(httpConfig)
        }
  
        etagCacheConfig.id = id
        etagCacheConfig.itemKey = itemKey
      } else if (etagValueType === 'string') {
        etagCacheConfig.id = etagValue
        etagCacheConfig.itemKey = generateCacheItemKey(httpConfig)
      } else if (etagValue === true) {
        // Undefined cacheId will use the default cacheId as defined in provider
        etagCacheConfig.itemKey = generateCacheItemKey(httpConfig)
      } else return
      return etagCacheConfig
    }