.when(new PromiseFunction() {
public void f(Deferred dfd) {
dfd.resolve("message");
}
})
.and(new Function(){
public Object f(Object... data) {
return (arguments[0] + " then1");
}
})
.then(new Function(){
public void f() {
// should return the previous value
}
})
.then(new FunctionDeferred() {
public void f(Deferred dfd) {
dfd.reject("then2 " + arguments[0]);
}
})
.then(new FunctionDeferred() {
public void f(Deferred dfd) {
dfd.resolve("then3 " + arguments[0]);
}
})
.done(new Function() {
public void f() {
finishTest();
fail();
}
})
.fail(new Function() {
public void f() {
assertEquals("then2 message then1", arguments(0));
finishTest();
done = true;
}