--- /dev/null
+import { Subscription } from '../Subscription';
+import { InnerSubscriber } from '../InnerSubscriber';
+import { OuterSubscriber } from '../OuterSubscriber';
+import { Subscriber } from '../Subscriber';
+import { subscribeTo } from './subscribeTo';
+import { Observable } from '../Observable';
+
+export function subscribeToResult<T, R>(
+ outerSubscriber: OuterSubscriber<T, R>,
+ result: any,
+ outerValue: undefined,
+ outerIndex: undefined,
+ innerSubscriber: InnerSubscriber<T, R>
+): Subscription | undefined;
+
+export function subscribeToResult<T, R>(
+ outerSubscriber: OuterSubscriber<T, R>,
+ result: any,
+ outerValue?: T,
+ outerIndex?: number
+): Subscription | undefined;
+
+export function subscribeToResult<T, R>(
+ outerSubscriber: OuterSubscriber<T, R>,
+ result: any,
+ outerValue?: T,
+ outerIndex?: number,
+ innerSubscriber: Subscriber<R> = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)
+): Subscription | undefined {
+ if (innerSubscriber.closed) {
+ return undefined;
+ }
+ if (result instanceof Observable) {
+ return result.subscribe(innerSubscriber);
+ }
+ return subscribeTo(result)(innerSubscriber) as Subscription;
+}