 <  * @return {RESULT}
 <  * @template VALUE
 <  *
-<  * When a Promise (or thenable) is returned from the fulfilled callback,
-<  * the result is the payload of that promise, not the promise itself.
+<  * When a `Thenable` is fulfilled or rejected with another `Thenable`, the
+<  * payload of the second is used as the payload of the first.
 <  *
 <  * @template RESULT := type('IThenable',
 <  *     cond(isUnknown(VALUE), unknown(),

1111,1250d1110
< 
< /**
<  * This is not an official DOM interface. It is used to add generic typing

< 
< 
< /**
<  * @param {function(*):VALUE} onRejected
<  * @return {!Promise<TYPE|VALUE>} A Promise of the original type or a possibly a
<  *     different type depending on whether the parent promise was rejected.
<  *
<  * @template VALUE
<  *
<  * When a `Thenable` is rejected with another `Thenable`, the payload of the
<  * second is used as the payload of the first.
<  *
<  * @template RESULT := cond(
<  *     isUnknown(VALUE),
<  *     unknown(),
<  *     mapunion(VALUE, (V) =>
<  *         cond(
<  *             isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
<  *             templateTypeOf(V, 0),
<  *             cond(
<  *                 sub(V, 'Thenable'),
<  *                 unknown(),
<  *                 V))))
<  * =:
<  */
< Promise.prototype.catch = function(onRejected) {};
< 
