       if @snapshotRestored = @controller.restoreSnapshotForLocationWithAction(@location, @action)
         @adapter.visitSnapshotRestored?(this)
       unless @shouldIssueRequest()
-        @resolve()
+        @complete()
 
   loadResponse: ->
     if @response?
       @saveSnapshot()
       if @request.failed
         @controller.loadErrorResponse(@response)
-        @reject()
+        @adapter.visitResponseLoaded?(this)
+        @fail()
       else
         @controller.loadResponse(@response)
-        @resolve()
-      @adapter.visitResponseLoaded?(this)
+        @adapter.visitResponseLoaded?(this)
+        @complete()
 
   # HTTP Request delegate
   

      @previousLocation = Turbolinks.Location.box(previousLocation)
      @location = Turbolinks.Location.box(location)
      @adapter = @controller.adapter
  
  start: ->
    unless @started
      @started = true
      @adapter.visitStarted(this)

  cancel: ->
    if @started and not @canceled
      @request?.cancel()
      @canceled = true

  then: ->
    @promise.then(arguments...)

  saveSnapshot: ->
    unless @snapshotSaved
      @controller.saveSnapshotForLocation(@previousLocation)
      @snapshotSaved = true
