| 'use strict'; |
| |
| var bind = require('function-bind'); |
| var define = require('define-properties'); |
| |
| var requirePromise = require('./requirePromise'); |
| var implementation = require('./implementation'); |
| var getPolyfill = require('./polyfill'); |
| var shim = require('./shim'); |
| |
| requirePromise(); |
| var bound = bind.call(Function.call, getPolyfill()); |
| |
| var rebindable = function allSettled(iterable) { |
| // eslint-disable-next-line no-invalid-this |
| return bound(typeof this === 'undefined' ? Promise : this, iterable); |
| }; |
| |
| define(rebindable, { |
| getPolyfill: getPolyfill, |
| implementation: implementation, |
| shim: shim |
| }); |
| |
| module.exports = rebindable; |