if (newArgs instanceof Promise) {
// If filter function returns a promise we pipeline it.
final Promise p = (Promise) newArgs;
if (type == PROGRESS) {
p.progress(new Function(){public void f() {
settle(PROGRESS, getArguments());
}});
} else {
p.always(new Function(){public void f() {
settle((type == DONE || type == FAIL && cont) && p.isResolved() ? DONE : FAIL, getArguments());