     @cachedDiskContents = @file?.readSync() ? ""
 
   # Rereads the contents of the file, and stores them in the cache.
-  updateCachedDiskContents: ->
-    Q(@file?.read() ? "").then (contents) =>
+  updateCachedDiskContents: (flushCache=false, callback) ->
+    Q(@file?.read(flushCache) ? "").then (contents) =>
       @cachedDiskContents = contents
+      callback?()
 
   ###
   Section: Private Utility Methods

    @fileSubscriptions = new CompositeDisposable

    @fileSubscriptions.add @file.onDidChange =>
      @conflict = true if @isModified()
      previousContents = @cachedDiskContents

      # Synchrounously update the disk contents because the {File} has already cached them. If the
      # contents updated asynchrounously multiple `conlict` events could trigger for the same disk
      # contents.
      @updateCachedDiskContentsSync()
      return if previousContents == @cachedDiskContents

      if @conflict
        @emitter.emit 'did-conflict'
        @emit "contents-conflicted"
      else
        @reload()

    @fileSubscriptions.add @file.onDidDelete =>
      modified = @getText() != @cachedDiskContents

    @fileSubscriptions.add @file.onDidRename =>
      @emitter.emit 'did-change-path', @getPath()
      @emit "path-changed", this

  onDidFileChange: ->
    @conflict = true if @isModified()
    previousContents = @cachedDiskContents

    # Synchrounously update the disk contents because the {File} has already cached them. If the
    # contents updated asynchrounously multiple `conlict` events could trigger for the same disk
    # contents.
    @updateCachedDiskContentsSync()
    return if previousContents == @cachedDiskContents

    if @conflict
      @emitter.emit 'did-conflict'
      @emit "contents-conflicted"
    else
      @reload()

  # Identifies if the buffer belongs to multiple editors.
  #
