Currently in client.py errors are thrown, then catched in various different ways in the procs and the main plugin.
One idea to unify the error handling would be to not throw exceptions, but to have the client return error codes and then handle those.