text: /*!
  {
    "name": "ES6 Promises",
    "property": "promises",
    "caniuse": "promises",
    "polyfills": ["es6promises"],
    "authors": ["Krister Kari", "Jake Archibald"],
    "tags": ["es6"],
    "notes": [{
      "name": "The ES6 promises spec",
      "href": "https://github.com/domenic/promises-unwrapping"
    },{
      "name": "Chromium dashboard - ES6 Promises",
      "href": "http://www.chromestatus.com/features/5681726336532480"
    },{
      "name": "JavaScript Promises: There and back again - HTML5 Rocks",
      "href": "http://www.html5rocks.com/en/tutorials/es6/promises/"
    }]
  }
  !*/
  /* DOC
  Check if browser implements ECMAScript 6 Promises per specification.
  */
  define(['Modernizr'], function( Modernizr ) {
    Modernizr.addTest('promises', function() {
      return 'Promise' in window &&
      // Some of these methods are missing from
      // Firefox/Chrome experimental implementations
      'cast' in window.Promise &&
      'resolve' in window.Promise &&
      'reject' in window.Promise &&
      'all' in window.Promise &&
      'race' in window.Promise &&
      // Older version of the spec had a resolver object
      // as the arg rather than a function
      (function() {
        var resolve;
        new window.Promise(function(r) { resolve = r; });
        return typeof resolve === 'function';
      }());
    });
  });
  