--- /dev/null
+import { Observable } from '../Observable';
+import { Subscription } from '../Subscription';
+import { observable as Symbol_observable } from '../symbol/observable';
+import { InteropObservable, SchedulerLike, Subscribable } from '../types';
+
+export function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {
+ return new Observable<T>(subscriber => {
+ const sub = new Subscription();
+ sub.add(scheduler.schedule(() => {
+ const observable: Subscribable<T> = input[Symbol_observable]();
+ sub.add(observable.subscribe({
+ next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },
+ error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },
+ complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },
+ }));
+ }));
+ return sub;
+ });
+}