Tristan/temporary failures backport
Backporting @Qinusty's branch to implement temporary vs permanent failure distinction, issue #397 (closed).
Backporting @Qinusty's branch to implement temporary vs permanent failure distinction, issue #397 (closed).