code: func (fb *Firebase) Watch(notifications chan Event) error {
  	fb.watchMtx.Lock()
  	if fb.watching {
  		fb.watchMtx.Unlock()
  		close(notifications)
  		return nil
  	}
  	fb.watching = true
  	fb.watchMtx.Unlock()
  
  	stop := make(chan struct{})
  	events, err := fb.watch(stop)
  	if err != nil {
  		return err
  	}
  
  	var closedManually bool
  
  	go func() {
  		<-fb.stopWatching
  		closedManually = true
  		stop <- struct{}{}
  	}()
  
  	go func() {
  		defer close(notifications)
  
  		for event := range events {
  			if closedManually {
  				return
  			}
  
  			notifications <- event
  		}
  	}()
  
  	return nil
  }
docs: // Watch listens for changes on a firebase instance and
  // passes over to the given chan.
  //
  // Only one connection can be established at a time. The
  // second call to this function without a call to fb.StopWatching
  // will close the channel given and return nil immediately.