code: function(callback, label) {
          var constructor = this.constructor;
  
          return this.then(function(value) {
            return constructor.resolve(callback()).then(function(){
              return value;
            });
          }, function(reason) {
            return constructor.resolve(callback()).then(function(){
              throw reason;
            });
          }, label);
        }
docs: `finally` will be invoked regardless of the promise's fate just as native
  try/catch/finally behaves
  
  Synchronous example:
  
  ```js
  findAuthor() {
  if (Math.random() > 0.5) {
  throw new Error();
  }
  return new Author();
  }
  
  try {
  return findAuthor(); // succeed or fail
  } catch(error) {
  return findOtherAuther();
  } finally {
  always runs
  doesn't affect the return value
  }
  ```
  
  Asynchronous example:
  
  ```js
  findAuthor().catch(function(reason){
  return findOtherAuther();
  }).finally(function(){
  author was either found, or not
  });
  ```
  
  @method finally
  @param {Function} callback
  @param {String} label optional string for labeling the promise.
  Useful for tooling.
  @return {Promise}