title: Equivalent of angular's $q.deferred.reject without $q
body: <p>I imagine this has to be a pretty normal setup:</p>
  
  <pre><code>return $http.get('some/url')
  .then(function (result) {
      if (result.data.success) {
          //Do something useful
      } else {
          //We've hit some sort of error
      }
  },
  function () {
      return "Failed to communicate with the server, or the server encountered an error.";
  });
  </code></pre>
  
  <p>My questions is around what to do about scenarios where the http call technically succeeds, but the data we get back from the server is bad, unusable, or explicitly indicates something is wrong. What I want to do there is push myself onto the failure track of the promise chain. That way anyone consuming this promise well execute their own failure function, if that makes sense.</p>
  
  <p>I know $q gives you the tools you need to do this by creating a deferred object and then letting you call resolve or reject under any circumstance you want, but I wondered if there was a way to do that without using $q.</p>