better exception handling

- rejected promises handled properly
- when flow with only one generator fails, it throws the exception