For some reason the `unsubscribe` never propagates back up on the non-buffered path:

```java
                            subscriber.add(Subscriptions.create(new Action0() {

                                @Override
                                public void call() {
                                    System.out.println("unsubscribe? " + inner.isUnsubscribed());
                                    inner.schedule(new Action1<Inner>() {

                                        @Override
                                        public void call(final Inner inner) {
                                            System.out.println("unsubscribe again?");
                                            cs.unsubscribe();
                                        }

                                    });
                                }

                            }));
```

The first println happens, the second doesn't.

I actually do not understand however why we need to schedule the `unsubscribe`, especially with our new `lift` model.

The `unsubscribe` does not happen from the parent, it happens from the children. And the children will most likely be on the same scheduler we're on, but even if it's not, why schedule it on the current thread? It's not the thread the parents are on, so why force it to propagate the unsubscribe to the parents on this thread?