     publish.added = (collectionName, id, fields) ->
       stringId = @_idFilter.idStringify id
 
+      return originalAdded.call @, collectionName, id, fields unless disabled
+
       FiberUtils.synchronize guardObject, "#{collectionName}$#{stringId}", =>
-        return originalAdded.call @, collectionName, id, fields unless disabled
-
         collectionView = @_session.getCollectionView collectionName
 
         originalSessionDocumentView = collectionView.documents[stringId]

    publish.removed = (collectionName, id) ->
      stringId = @_idFilter.idStringify id

      FiberUtils.synchronize guardObject, "#{collectionName}$#{stringId}", =>
        return originalRemoved.call @, collectionName, id unless disabled

        collectionView = @_session.getCollectionView collectionName

        originalSessionDocumentView = collectionView.documents[stringId]

    publish.changed = (collectionName, id, fields) ->
      stringId = @_idFilter.idStringify id

      return originalChanged.call @, collectionName, id, fields unless disabled

      FiberUtils.synchronize guardObject, "#{collectionName}$#{stringId}", =>

        collectionView = @_session.getCollectionView collectionName

