code: function(callback, context) {
        var fn = this._utils.debounce(callback, context, 0);
        var off = this._auth.onAuthStateChanged(fn);
  
        // Return a method to detach the `onAuthStateChanged()` callback.
        return off;
      }
docs: *********************** /*  Authentication State *********************** 
  Asynchronously fires the provided callback with the current authentication data every time
  the authentication data changes. It also fires as soon as the authentication data is
  retrieved from the server.
  
  @param {function} callback A callback that fires when the client's authenticate state
  changes. If authenticated, the callback will be passed an object containing authentication
  data according to the provider used to authenticate. Otherwise, it will be passed null.
  @param {string} [context] If provided, this object will be used as this when calling your
  callback.
  @return {Promise<Function>} A promised fulfilled with a function which can be used to
  deregister the provided callback.