--- /dev/null
+/*global self*/
+import Promise from './promise';
+
+export default function polyfill() {
+ let local;
+
+ if (typeof global !== 'undefined') {
+ local = global;
+ } else if (typeof self !== 'undefined') {
+ local = self;
+ } else {
+ try {
+ local = Function('return this')();
+ } catch (e) {
+ throw new Error('polyfill failed because global object is unavailable in this environment');
+ }
+ }
+
+ let P = local.Promise;
+
+ if (P) {
+ var promiseToString = null;
+ try {
+ promiseToString = Object.prototype.toString.call(P.resolve());
+ } catch(e) {
+ // silently ignored
+ }
+
+ if (promiseToString === '[object Promise]' && !P.cast){
+ return;
+ }
+ }
+
+ local.Promise = Promise;
+}