title: child_removed doesn't always fire on firebase
body: <p>I'm running two tests in firebase.  One version passes, the other does not.  The child_removed callback works fine if it's attached before the child is actually added.  It does not fire when attached after the insert.</p>
  
  <p>Version that passes the test: </p>
  
  <pre><code>it("A) listens to child_removed raw (Before Insert)", function (done) {
    this.timeout(5000);
  
    let ref = DataServices.database.ref();
    let pushRef = ref.child('test/testChildRemovedA').push();
    let newKey = pushRef.key;
    let insertPath = 'test/testChildRemovedA/' + newKey;
  
    let callback = (snapshot) =&gt; { done(); }
    DataServices.database.ref('test/testChildRemovedA/').on("child_removed", callback);
  
    let updates = {};
    updates[insertPath] = 'hi';
    DataServices.database.ref().update(updates).then(() =&gt; {
        updates[insertPath] = null;
        DataServices.database.ref().update(updates);
      });
  });
  </code></pre>
  
  <p>Version that fails the test: </p>
  
  <pre><code>it("B) listens to child_removed raw (After Insert)", function (done) {
    this.timeout(10000);
  
    let ref = DataServices.database.ref();
    let pushRef = ref.child('test/testChildRemovedB').push();
    let newKey = pushRef.key;
    let insertPath = 'test/testChildRemovedB/' + newKey;
  
    let callback = (snapshot) =&gt; { done(); }
    let updates = {};
    updates[insertPath] = 'hi';
    DataServices.database.ref().update(updates).then(() =&gt; {
        DataServices.database.ref('test/testChildRemovedB/').on("child_removed", callback);
        updates[insertPath] = null;
        DataServices.database.ref().update(updates);
      });
  });
  </code></pre>
  
  <p>The only difference is where the child_removed event is attached, but both are attached before the data is actually deleted.  In both cases, the data is indeed removed from firebase.</p>
  
  <p>Is there a race condition when adding the child_removed listener?</p>