     writer() while writer = @documentWriters.shift()
 
   startPollingDocument: ->
-    window.addEventListener('resize', @performDocumentPoll)
+    window.addEventListener('resize', @requestDocumentPoll)
     @observer.observe(document, {subtree: true, childList: true, attributes: true})
 
   stopPollingDocument: ->
-    window.removeEventListener('resize', @performDocumentPoll)
+    window.removeEventListener('resize', @requestDocumentPoll)
     @observer.disconnect()
 
-  performDocumentPoll: =>
+  requestDocumentPoll: =>
     if @documentUpdateRequested
       @performDocumentPollAfterUpdate = true
     else
-      poller() for poller in @documentPollers
-      return
+      @debouncedPerformDocumentPoll()
+
+  performDocumentPoll: ->
+    poller() for poller in @documentPollers
+    return

  documentUpdateRequested: false
  documentReadInProgress: false
  performDocumentPollAfterUpdate: false

  constructor: ->
    @views = new WeakMap

{find} = require 'underscore-plus'
Grim = require 'grim'
{Disposable} = require 'event-kit'
_ = require 'underscore-plus'

# Essential: `ViewRegistry` handles the association between model and view
# types in Atom. We call this association a View Provider. As in, for a given
