text:   /**
     * Returns the values from the source observable sequence only after the other observable sequence produces a value.
     * @param {Observable | Promise} other The observable sequence or Promise that triggers propagation of elements of the source sequence.
     * @returns {Observable} An observable sequence containing the elements of the source sequence starting from the point the other sequence triggered propagation.
     */
    observableProto.skipUntil = function (other) {
      var source = this;
      return new AnonymousObservable(function (o) {
        var isOpen = false;
        var leftSubscription = new SingleAssignmentDisposable();
        leftSubscription.setDisposable(
          source.subscribe(function (left) {
            isOpen && o.onNext(left);
          }, function (e) { o.onError(e); }, function () {
            isOpen && o.onCompleted();
          })
        );
  
        isPromise(other) && (other = observableFromPromise(other));
  
        var rightSubscription = new SingleAssignmentDisposable();
        rightSubscription.setDisposable(
          other.subscribe(function () {
            isOpen = true;
            rightSubscription.dispose();
          }, function (e) { o.onError(e); }, function () {
            rightSubscription.dispose();
          })
        );
  
        return new BinaryDisposable(leftSubscription, rightSubscription);
      }, source);
    };
  