Since this class is super generic now, we might want to move the rethrow logic from an enum to be an instanceof in the rethrow method...