zipLatest(other, mergeFunc) {
        return new Observable(observer => {
            let has1 = false;
            let has2 = false;
            let last1;
            let last2;
            let unreg1 = this.subscribe(e1 => {
                last1 = e1;
                has1 = true;
                if (has2) {
                    observer(mergeFunc(last1, last2));
                }
            });
            let unreg2 = other.subscribe(e2 => {
                last2 = e2;
                has2 = true;
                if (has1) {
                    observer(mergeFunc(last1, last2));
                }
            });
            return () => { unreg1(); unreg2(); };
        });
    }
@param {!Observable.<T2>} other
@param {!function(T1, T2): TOut} mergeFunc
@returns {!Observable.<TOut>}
@template T1, T2, TOut