fix return value of then/recover functions.