 
     @emit 'change', op
 
-    # A timeout is used so if the user sends multiple ops at the same time, they'll be composed
-    # & sent together.
+    @delayedFlush()
+
+  delayedFlush: () ->
     if !@flushTimeout?
         @flushTimeout = setTimeout @flush, @_flushDelay || 0
   

  # Only one op can be in-flight at a time, so if an op is already on its way then
  # this method does nothing.
  flush: =>
    delete @flushTimeout
    #console.log "CALLED FLUSH"

    return unless @connection.state == 'ok' and @inflightOp == null and @pendingOp != null

        callback null, oldInflightOp for callback in @inflightCallbacks

      # Send the next op.
      @delayedFlush()

    else if msg.op
      # We got a new op from the server.
