(function (Promise) {
    'use strict';

    if ('defer' in Promise) {
        return;
    }

    Promise.defer = function () {
        var fnResolve, fnReject;

        var deferred = new Promise(function (resolve, reject) {
            fnResolve = resolve;
            fnReject = reject;
        });

        deferred.promise = deferred;

        return deferred;
    }
}(Promise));

@@ -304,24 +304,45 @@
         
+Object.definePropery(
 deferred
 .promise
@@ -337,27 +337,61 @@
 rred
-.
+, '
 promise
- = deferred
+', %7B%0A            value: deferred%0A        %7D)
 ;%0A%0A 
@@ -432,9 +432,8 @@
 omise));
-%0A

use Object.defineProperty to define the promise property to be not configurable, writable, etc.