if( typeof module !== "undefined" && module.exports ) {
    module.exports = Promise;
}
else if( typeof define === "function" && define.amd ) {
    define( "Promise", [], function(){return Promise;});
}
else {
    global.Promise = Promise;
}


return Promise;})(
    (function(){
        //shims for new Function("return this")()
        if( typeof this !== "undefined" ) {
            return this;
        }
        if( typeof process !== "undefined" &&
            typeof global !== "undefined" &&
            typeof process.execPath === "string" ) {
            return global;
        }
        if( typeof window !== "undefined" &&
            typeof document !== "undefined" &&
            document.defaultView === window ) {
            return window;
        }
    })(),
    Function,
    Array,
    Error,
    Object
);
if( typeof module !== "undefined" && module.exports ) {
    module.exports = Promise;
}
else if( typeof define === "function" && define.amd ) {
    define(function(){return Promise;});
}
else {
    global.Promise = Promise;
}


return Promise;})(
    (function(){
        //shims for new Function("return this")()
        if( typeof this !== "undefined" ) {
            return this;
        }
        if( typeof process !== "undefined" &&
            typeof global !== "undefined" &&
            typeof process.execPath === "string" ) {
            return global;
        }
        if( typeof window !== "undefined" &&
            typeof document !== "undefined" &&
            document.defaultView === window ) {
            return window;
        }
    })(),
    Function,
    Array,
    Error,
    Object
);
Use an anonymous module declaration for AMD.
Use an anonymous module declaration for AMD.

This allows loading via AMD using require('bluebird'), to match the npm module name.
