       if Tracker.active
         currentComputation = Tracker.currentComputation
       else
+        # Computation can also be passed through current fiber in the case this "added" method is called
+        # from the observeChanges callback from an observeChanges called inside a reactive context.
         currentComputation = Fiber.current._publishComputation
       if currentComputation
         @_setAfterFlush currentComputation
         Meteor._ensure(documents, currentComputation._id, collectionName)[stringId] = true
+
       # If document as already present in publish then we call changed to send updated fields (Meteor sends only a diff).
+      # This can hide some errors in publish functions if they one calls "added" on an existing document and we could
+      # make it so that this behavior works only inside reactive computation (if "currentComputation" is set), but we
+      # can also make it so that publish function tries to do something smarter (sending a diff) in all cases, as we do.
       if @_documents[collectionName]?[stringId]
         oldFields = {}
         # If some field existed before, but does not exist anymore, we have to remove it by calling "changed"

MongoInternals.Connection::_observeChanges = (cursorDescription, ordered, callbacks) ->
  initializing = true

  if Tracker.active
    Meteor._nodeCodeMustBeInFiber()
    currentComputation = Tracker.currentComputation

      if currentComputation
        @_setAfterFlush currentComputation

      # Mark it as ready only the first time.
      originalReady.call @ unless ready
      ready = true

      # To return nothing.
      return

    handles = []
    # This autorun is nothing special, just that it makes sure handles are stopped when publish stops,
    # and that you can return cursors from the function which would be automatically published.
    publish.autorun = (runFunc) ->
      handle = Tracker.autorun (computation) ->
        result = runFunc computation
