public void Subscribe(ISubscriber <T> s)
 {
     if (s is IConditionalSubscriber <T> )
     {
         var parent = new TimeoutConditionalSubscriber((IConditionalSubscriber <T>)s, firstTimeout, itemTimeout, fallback);
         s.OnSubscribe(parent);
         source.Subscribe(parent);
     }
     else
     {
         var parent = new TimeoutSubscriber(s, firstTimeout, itemTimeout, fallback);
         s.OnSubscribe(parent);
         source.Subscribe(parent);
     }
 }
 internal FallbackConditionalSubscriber(TimeoutConditionalSubscriber parent, IConditionalSubscriber <T> actual)
 {
     this.actual = actual;
     this.parent = parent;
 }