| import { Subscription } from '../Subscription'; | 
| import { SchedulerAction, SchedulerLike } from '../types'; | 
|   | 
| export function executeSchedule( | 
|   parentSubscription: Subscription, | 
|   scheduler: SchedulerLike, | 
|   work: () => void, | 
|   delay: number, | 
|   repeat: true | 
| ): void; | 
| export function executeSchedule( | 
|   parentSubscription: Subscription, | 
|   scheduler: SchedulerLike, | 
|   work: () => void, | 
|   delay?: number, | 
|   repeat?: false | 
| ): Subscription; | 
|   | 
| export function executeSchedule( | 
|   parentSubscription: Subscription, | 
|   scheduler: SchedulerLike, | 
|   work: () => void, | 
|   delay = 0, | 
|   repeat = false | 
| ): Subscription | void { | 
|   const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) { | 
|     work(); | 
|     if (repeat) { | 
|       parentSubscription.add(this.schedule(null, delay)); | 
|     } else { | 
|       this.unsubscribe(); | 
|     } | 
|   }, delay); | 
|   | 
|   parentSubscription.add(scheduleSubscription); | 
|   | 
|   if (!repeat) { | 
|     // Because user-land scheduler implementations are unlikely to properly reuse | 
|     // Actions for repeat scheduling, we can't trust that the returned subscription | 
|     // will control repeat subscription scenarios. So we're trying to avoid using them | 
|     // incorrectly within this library. | 
|     return scheduleSubscription; | 
|   } | 
| } |