title: Bluebird's Promise.settle doesn't resolve with the correct values
body: <p>I have the following code:</p>
  
  <pre><code>return Promise.settle(matches, imgur.uploadUrl)
      .map(function (inspection) {
          if (inspection.isFulfilled()) {
              return inspection.value().data.link;
          }
          return '#';
      })
  </code></pre>
  
  <p>A more verbose version of the above displays the same problems:</p>
  
  <pre><code>return Promise.settle(matches, function(match) { return imgur.uploadUrl(match); })
      .then(function(results) {
          return results;
      })
      .map(function (inspection) {
          if (inspection.isFulfilled()) {
              return inspection.value().data.link;
          }
          return '#';
      })
  </code></pre>
  
  <p>Where</p>
  
  <ul>
  <li><code>Promise</code> = bluebird's promise</li>
  <li><code>matches</code> = an array of image links extracted from a string</li>
  <li><code>imgur</code> = <a href="https://github.com/kaimallea/node-imgur" rel="nofollow">https://github.com/kaimallea/node-imgur</a></li>
  </ul>
  
  <p>The expected behavior is that the result of <code>.map</code> is a promise which resolves with an array of imgur links after the images in the original array was uploaded to imgur (or '#', in case the upload failed for any reason). </p>
  
  <p>What happens instead is that Promise.settle resolves <em>instantly</em> (i.e. doesn't seem to wait for the imgur uploads), and <code>inspection.value()</code> is the original image url from the <code>matches</code> array (which gives an error when trying to read the <code>.data.link</code> property of a string).</p>
  
  <p>Why does this happen? Why won't it upload to imgur and resolve correctly?</p>