title: Function works, but fails when util.promisify() used?
body: <p>I have some code using <a href="https://www.npmjs.com/package/node-bing-api" rel="noreferrer">node-bing-api</a>. <strong>It's err-first and works perfectly</strong>, but I'd like to convert it to using Promises (and <code>await</code>).</p>
  
  <p>I'm using node 8, and <code>util.promisify</code>. In the code below, <code>Bing.web</code> is the regular err-first code, and <code>searchBing</code> is the promisified version. </p>
  
  <pre><code>var findParentDir = require('find-parent-dir'),
      configDir = findParentDir.sync(__dirname, 'config.js'),
      config = require(configDir+'config.js'),
      util = require('util'),
      log = console.log.bind(console),
      Bing = require('node-bing-api')({ accKey: config.cognitiveServices.bingSearch }),
      searchBing = util.promisify(Bing.web);
  
  var start = async function(){
      // This fails
      // var searchResultsRaw = await searchBing('windows', {top: 5})
      // log(searchResultsRaw)
  
      // This works
      Bing.web('windows', {top: 5}, function(err, searchResultsRaw){
          log(searchResultsRaw)
      })
  };
  
  start();
  </code></pre>
  
  <p>The promisified version fails with:</p>
  
  <pre><code>(node:1752) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: this.searchVertical is not a function
  </code></pre>
  
  <p>This is an error inside node-bing-api. But shouldn't <code>util.promisify</code> be passing the options on to the real <code>bing.web</code> seamlessly, using the same arguments as the original function?</p>
  
  <p><strong>Why won't this function work when promisified?</strong></p>
  
  <p>Note I can make my own promisifed version - which works - but I'd rather not create extra code:</p>
  
  <pre><code>var searchBing = function(){
    return new Promise(function(resolve, reject) {
      Bing.web('windows', {top: 5}, function(err, searchResults){
        if ( err ) {
          reject(err)
          return
        }
        resolve(searchResults)
      })
    })
  }
  </code></pre>