message: refactor(skip): Make implementation smaller
  Smaller implementation
  Uses OperatorSubscriber
diff: -import { Operator } from '../Operator';
  +/** @prettier */
  import { Subscriber } from '../Subscriber';
  import { Observable } from '../Observable';
  -import { MonoTypeOperatorFunction, TeardownLogic } from '../types';
  +import { MonoTypeOperatorFunction } from '../types';
  import { lift } from '../util/lift';
  +import { OperatorSubscriber } from './OperatorSubscriber';
  /**
  * Returns an Observable that skips the first `count` items emitted by the source Observable.
  @@ -14,33 +15,14 @@ import { lift } from '../util/lift';
  * @name skip
  */
  export function skip<T>(count: number): MonoTypeOperatorFunction<T> {
  - return (source: Observable<T>) => lift(source, new SkipOperator(count));
  -}
  -
  -class SkipOperator<T> implements Operator<T, T> {
  - constructor(private total: number) {
  - }
  -
  - call(subscriber: Subscriber<T>, source: any): TeardownLogic {
  - return source.subscribe(new SkipSubscriber(subscriber, this.total));
  - }
  -}
  -
  -/**
  - * We need this JSDoc comment for affecting ESDoc.
  - * @ignore
  - * @extends {Ignored}
  - */
  -class SkipSubscriber<T> extends Subscriber<T> {
  - count: number = 0;
  -
  - constructor(destination: Subscriber<T>, private total: number) {
  - super(destination);
  - }
  -
  - protected _next(x: T) {
  - if (++this.count > this.total) {
  - this.destination.next(x);
  - }
  - }
  + return (source: Observable<T>) =>
  + lift(source, function (this: Subscriber<T>, source: Observable<T>) {
  + const subscriber = this;
  + let seen = 0;
  + return source.subscribe(
  + new OperatorSubscriber(subscriber, (value) => {
  + count === seen ? subscriber.next(value) : seen++;
  + })
  + );
  + });
  }
  