fix last work will be called twice

Non-async workflow or array of non-async work will cause baton#pass()
accidently called twice, which result in last work being called twice.