hunk.code_window: export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2>>;
   /** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */
   export function concat<O1 extends ObservableInput<any>, O2 extends ObservableInput<any>, O3 extends ObservableInput<any>>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable<ObservedValueOf<O1> | ObservedValueOf<O2> | ObservedValueOf<O3>>;
  
hunk.labels: keep replace keep
hunk.after_edit: /** @deprecated remove in v8. Passing a scheduler to concat is deprecated, please use {@link scheduled} and {@link concatAll} `scheduled([o1, o2], scheduler).pipe(concatAll())` */
  
hunk.file_path: src/internal/observable/concat.ts
hunk.type: replace
file: import { Subscriber } from '../Subscriber';
  import { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';
  import { empty as emptyObserver } from '../Observer';
  import { PartialObserver } from '../types';
  
  export function toSubscriber<T>(
    nextOrObserver?: PartialObserver<T> | ((value: T) => void),
    error?: (error: any) => void,
    complete?: () => void): Subscriber<T> {
  
    if (nextOrObserver) {
      if (nextOrObserver instanceof Subscriber) {
        return (<Subscriber<T>> nextOrObserver);
      }
  
      if (nextOrObserver[rxSubscriberSymbol]) {
        return nextOrObserver[rxSubscriberSymbol]();
      }
    }
  
    if (!nextOrObserver && !error && !complete) {
      return new Subscriber(emptyObserver);
    }
  
    return new Subscriber(nextOrObserver, error, complete);
  }
  