this triple-exception structure is really terrible; I talk about it a little bit over in https://github.com/OSU-Net/cyder/issues/438. Should probably clean this up.