The original code promoted pretty much every error to an unhandled
RuntimeException. Use the exceptions already in place to handle erros
occuring. Also handle IO error as a retriable operation.
Change-Id: I666d66e89993f0f9d18afb6ec680e64a50cefec1 Signed-off-by: Robert Varga <rovarga@cisco.com>