Promisify the given name on the given object, and create a copy of the object.

@param {*} obj A value that can have properties.
@param {String} methodName The method to promisify.
@param {Boolean|String[]} options.variadic See the documentation for promisify.
@return {Object} The promisified object.
function promisifyMethod(obj, methodName, options) {
  if (!obj) {
    // This object could be anything, including a function, a real object, or an array.
    throw new TypeError('promisify.method requires a truthy value');
  }
  return promisify(obj[methodName].bind(obj), options);
}