public IDisposable Subscribe(IObserver <T> observer) { var g = new CompositeDisposable(); g.Add(CurrentThreadScheduler.Instance.Schedule(() => { observer.OnNext(head); g.Add(tail.Merge().Subscribe(observer)); })); return(g); }