import {

noop,
reject as _reject

} from '../-internal';

/**

`RSVP.Promise.reject` returns a promise rejected with the passed `reason`.
It is shorthand for the following:

```javascript
var promise = new RSVP.Promise(function(resolve, reject){
  reject(new Error('WHOOPS'));
});

promise.then(function(value){
  // Code here doesn't run because the promise is rejected!
}, function(reason){
  // reason.message === 'WHOOPS'
});
```

Instead of writing the above, your code now simply becomes the following:

```javascript
var promise = RSVP.Promise.reject(new Error('WHOOPS'));

promise.then(function(value){
  // Code here doesn't run because the promise is rejected!
}, function(reason){
  // reason.message === 'WHOOPS'
});
```

@method reject
@static
@param {Any} reason value that the returned promise will be rejected with.
@param {String} label optional string for identifying the returned promise.
Useful for tooling.
@return {Promise} a promise rejected with the given `reason`.

*/ export default function reject(reason, label) {

/*jshint validthis:true */
var Constructor = this;
var promise = new Constructor(noop, label);
_reject(promise, reason);
return promise;

}