message: refactor(scheduleArray): smaller impl, better comments
diff: +/** @prettier */
  import { Observable } from '../Observable';
  import { SchedulerLike } from '../types';
  -import { Subscription } from '../Subscription';
  export function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {
  - return new Observable<T>(subscriber => {
  - const sub = new Subscription();
  + return new Observable<T>((subscriber) => {
  + // The current array index.
  let i = 0;
  - sub.add(scheduler.schedule(function () {
  + // Start iterating over the array like on a schedule.
  + return scheduler.schedule(function () {
  if (i === input.length) {
  + // If we have hit the end of the array like in the
  + // previous job, we can complete.
  subscriber.complete();
  - return;
  - }
  + } else {
  + // Otherwise let's next the value at the current index,
  + // then increment our index.
  subscriber.next(input[i++]);
  + // If the last emission didn't cause us to close the subscriber
  + // (via take or some side effect), reschedule the job and we'll
  + // make another pass.
  if (!subscriber.closed) {
  - sub.add(this.schedule());
  + this.schedule();
  + }
  }
  - }));
  - return sub;
  + });
  });
  }
  