Currently error code is attached to a future returned by when_all() which is never is exceptional one, but it may hold exceptional future as a first element. Move error handling close to where error it tries to catch is generated instead.