code: function WhenProperty(whenExpression, thenExpression) {
    if (!thenExpression) {
      thenExpression = whenExpression;
      whenExpression = 'true';
    }
  
    this.whenExpression = whenExpression;
    this.thenExpression = thenExpression;
  }
docs: Calls the `thenExpression` and assigns the results to the object's property when the `whenExpression` changes value
  to anything other than a falsey value such as undefined. The return value of the `thenExpression` may be a Promise.
  
  @param {String} whenExpression The conditional expression use to determine when to call the `thenExpression`
  @param {String} thenExpression The expression which will be executed when the `when` value changes and the result (or
  the result of the returned promise) is set on the object.