         offset = result.offset
         whiteSpace = /^\s*$/
 
+        @_previousParseTimestamp = @_parseTimestamp
+        @_parseTimestamp = (new Date).getTime()
+
         # Return empty list if all we got is white space
-        return [] if result.data.match whiteSpace
+        if result.data.match whiteSpace
+            @shrinkRequestLength()
+            return []
 
         # We have more stuff to fetch if we got `requestLength` data back
         # and (we're going forwards or we're at the start)

    getMaxOffset: =>
        if @length > 0 then @last().getEndOffset() else 0

    fetchInitialData: =>
        # When we request `read` without passing an offset, we get given
        # back just the end offset of the file
        $.ajax
            url: @url()
            data: {@path, length: @requestLength}
        .done (response) =>
            offset = response.offset - @requestLength
            offset = orZero offset

            request = @fetch data:
                path: @path
                offset: offset

            @trigger 'initialdata'


    comparator: 'offset'

    delimiter: /\n/

    # How much we request at a time (before growing it)
    baseRequestLength: 30000

    requestLengthGrowthFactor: 1.75
    maxRequestLength: @::baseRequestLength * 10

    # Request a larger chunk at start
    initialRequestLength: @::baseRequestLength * 3

    # Store collection state on a model so it can be observed by others (events)
    state: new Backbone.Model
