When you pass onSnapshotin Rx.Observable.create, you pass it unbound to the request. That is, you just pass the function Query.prototype.onSnapshot.
You can use bind, for example:
const query = db
  .collection('conversations')
  .where('members.' + auth.currentUser.uid, '==', true);
let observable = Rx.Observable.create(query.onSnapshot.bind(query));
observable.subscribe({
  next(value) { console.log('value', value); }
});
Or you can use the arrow function, for example:
let observable = Rx.Observable.create(observer => db
  .collection('conversations')
  .where('members.' + auth.currentUser.uid, '==', true)
  .onSnapshot(observer)
);
observable.subscribe({
  next(value) { console.log('value', value); }
});
 source
share