Actually I don't think that this is a bug.
This is actually the "as designed" behaviour of Q ( the promises library that breeze uses) in the case where a promise chain is not terminated with a done() or end() call.
from this link: https://groups.google.com/forum/#!topic/q-continuum/TfV8TIYaCpc
The message should only every be written to the console in a browser,
the first time a rejected promise is constructed. It is a mechanism to
prevent unhandled rejections from going unnoticed, which can happen if
the programmer forgets to terminate a chain of promises with .done(),
.end(), or .nodeify(). Unfortunately, once the message has been
written to the console, it cannot be removed. However, the browser
console provides a living view into the content of the array. When
the rejection gets handled, Q removes the "reason" from the array.
Thus, if you see Should be empty: [] on your console, nothing is
wrong.
Also, in the interest of completeness, if you were to actually handle the fail case, you will get a meaningful error message in e.message, i.e.
breeze.EntityQuery
.from("EntityThatDoesnotExist")
.using(new breeze.EntityManager("http://todo.breezejs.com/api/todos"))
.execute()
.then(function () {
// will not get here.
}) .fail(function (e) {
// e.message will contain a message something like:
// No HTTP resource was found that matches the request URI
// http://localhost:7149/api/NorthwindIBModel/EntityThatDoesnotExist'
});