diff --git a/implementation.js b/implementation.js index 9f98cdf..e00d7a7 100644 --- a/implementation.js +++ b/implementation.js @@ -15,9 +15,11 @@ if (typeof Promise !== 'function') { throw new TypeError('`Promise` must be globally available for util.promisify to work.'); } -var slice = Function.call.bind(Array.prototype.slice); -var concat = Function.call.bind(Array.prototype.concat); -var forEach = Function.call.bind(Array.prototype.forEach); +var callBound = require('es-abstract/helpers/callBound'); + +var $slice = callBound('Array.prototype.slice'); +var $concat = callBound('Array.prototype.concat'); +var $forEach = callBound('Array.prototype.forEach'); var hasSymbols = require('has-symbols')(); @@ -51,16 +53,16 @@ module.exports = function promisify(orig) { var argumentNames = orig[kCustomPromisifyArgsSymbol]; var promisified = function fn() { - var args = slice(arguments); + var args = $slice(arguments); var self = this; // eslint-disable-line no-invalid-this return new Promise(function (resolve, reject) { - orig.apply(self, concat(args, function (err) { - var values = arguments.length > 1 ? slice(arguments, 1) : []; + orig.apply(self, $concat(args, function (err) { + var values = arguments.length > 1 ? $slice(arguments, 1) : []; if (err) { reject(err); } else if (typeof argumentNames !== 'undefined' && values.length > 1) { var obj = {}; - forEach(argumentNames, function (name, index) { + $forEach(argumentNames, function (name, index) { obj[name] = values[index]; }); resolve(obj); diff --git a/package.json b/package.json index c7ff61a..c9643e9 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "dependencies": { "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" },