So. then().or() is actually a callback factory which (obviously, being a callback factory) returns a callback.
It does not look like much but this way the error is always treated in some way, thus eliminating the possibility of omitting proper-error handling.

It's concise

functionstop(err){

throw err;

}

functionlog(err){

console.error(err);

}

db.insert({'name':'foo'},

then(function(result){

db.query({},then(function(result){

//proceed

}).or(log));

}).or(stop);

);

You could extend the concept with your own factories:

functionexceptional(continuation){

return then(continuation).or(function(err){throw err });

}

db.insert({'name':'foo'},exceptional(function(result){

}));

To debug asynchronous code I always found logging (instead of stepping through the code interactively) the only way to go.
Using flawless you can simply enable the debugging mode after which the module will log every call to the console.