 
         originalSessionDocumentView = collectionView.documents[stringId]
 
-        # Create an empty session document for this id.
-        collectionView.documents[id] = new DDPServer._SessionDocumentView()
+        try
+          # Create an empty session document for this id.
+          collectionView.documents[id] = new DDPServer._SessionDocumentView()
 
-        # For fields which are being cleared we have to mock some existing
-        # value otherwise change will not be send to the client.
-        for field, value of fields when value is undefined
-          collectionView.documents[id].dataByKey[field] = [subscriptionHandle: @_subscriptionHandle, value: null]
+          # For fields which are being cleared we have to mock some existing
+          # value otherwise change will not be send to the client.
+          for field, value of fields when value is undefined
+            collectionView.documents[id].dataByKey[field] = [subscriptionHandle: @_subscriptionHandle, value: null]
 
-        try
           originalChanged.call @, collectionName, id, fields
         finally
           if originalSessionDocumentView


        originalSessionDocumentView = collectionView.documents[stringId]

        # Make sure we start with a clean slate for this document ID.
        delete collectionView.documents[stringId]

        try
          originalAdded.call @, collectionName, id, fields
        finally
          if originalSessionDocumentView


        originalSessionDocumentView = collectionView.documents[stringId]

        try
          # Create an empty session document for this id.
          collectionView.documents[id] = new DDPServer._SessionDocumentView()

          originalRemoved.call @, collectionName, id
        finally
          if originalSessionDocumentView
