Great example of why OOP sucks:
https://github.com/aws/aws-iot-device-sdk-js#jobs
Jobs extends Device ThingShadow extends Device
and that's why you can only use Jobs OR ThingShadow, not both at the same time
on the same connection:
https://github.com/aws/aws-iot-device-sdk-js/issues/179#issuecomment-356427624