     clearTimeout(delayTimer)
     delayTimer = null
 
+  ###*
+  @protected
+  @method up.proxy.preload
+  @return
+    A promise that will be resolved when the request was loaded and cached
+  ###
   preload = (link, options) ->
     options = u.options()
     ensureIsIdempotent(options)

    timeSinceTouch = timestamp() - promise.timestamp
    timeSinceTouch < config.cacheExpiry

  get = (request) ->
    key = cacheKey(request)
    if promise = cache[key]

        promise
    else
      u.debug("Cache miss for %o (%o)", request.url, request)
      undefined

  ###*
  @protected
  @method up.proxy.set
  ###
  set = (request, promise) ->
    trim()
    key = cacheKey(request)
    promise.timestamp = timestamp()
    cache[key] = promise
    promise

  ###*
  @protected
  @method up.proxy.remove
  ###
  remove = (request) ->
    key = cacheKey(request)
    delete cache[key]

  ###*
  @protected
  @method up.proxy.clear
  ###
  clear = ->
    cache = {}
  
