         @$container.find(@options.navSelector).each(@options.loading)
 
     _success: ->
+      # ignore any requests that started before we last invalidated
+      return if @_isInvalidatedRequest(@requestAts.shift())
+      @_recache()
       @options.state.loading = false
       @_log "New page loaded!"
       if typeof @options.success is 'function'
         @$container.find(@options.navSelector).each(@options.success)
 
     _error: ->
+      # ignore any requests that started before we last invalidated
+      return if @_isInvalidatedRequest(@requestAts.shift())
       @options.state.loading = false
       @_log "Error loading new page :("
       if typeof @options.error is 'function'

(($, window) ->
  # Define the plugin class
  class InfinitePages

    # Default settings
    defaults:

      @$container = $(container)
      @$table = $(container).find('table')
      @$context = $(@options.context)
      @instanceId = @constructor._nextId()
      @invalidateAt = +new Date # timestamp before which we ignore responses
      @requestAts = [] # list of timestamps for pending requests
      @init()

    # Setup and bind to related events
