q.fcall will return the promise object, and the function's return value
will be the parameter of next call

we need to clear the process up:

when it comes to 5 times, an error occur, and the promise bind a error
handler in the last line, so it will be rejected, after being rejected,
it will never excute the remain funciton