function _rejected(exception) {
        if (typeof rejected === "function") {
            makeStackTraceLong(exception, self);
            try {
                return rejected(exception);
            } catch (newException) {
                return reject(newException);
            }
        }
        return reject(exception);
    }
Constructs a Promise with a promise descriptor object and optional fallback
function.  The descriptor contains methods like when(rejected), get(name),
set(name, value), post(name, args), and delete(name), which all
return either a value, a promise for a value, or a rejection.  The fallback
accepts the operation name, a resolver, and any further arguments that would
have been forwarded to the appropriate method above had a method been
provided with the proper name.  The API makes no guarantees about the nature
of the returned object, apart from that it is usable wherever promises are
bought and sold.