Could be return code or exception. Dunno what is the stance here regarding pythonicity of code. Anyway I coded near-trivial changes to propagate return code from cp/dfu-suffix/dfu-util to caller, which allows caller scripts to at least exit with a non-zero return code when things went wrong.
TL;DR: Before change, failure goes unnoticed in build (including CI build etc), after change failure gets noticed. Can do quick PR.