This is a LOT of parameters (total) and only a few new methods/overrides.  I normally take that as a signal to consider more if this new class *really* "is-like-a...", or is it more of a "uses-a...".  Hint:  think about what unique "usefulness" this class brings, and whether or not that overlaps with it's super-class and the way it works or is it's own unique way.  There's nothing wrong with making a brand-new class that contains an instance of another class as an attribute and/or accepts it as a parameter.  Instead of 'represent' (i.e. subclass) If it can 'contain', then it brings a **huge benefit** that you can now extend your new class many new ways w/ being held back so much.

Suggestion: Make this class descend from Object, and accept a ``AsyncDockerCmd`` instance + ``create_pipes=True`` parameters.  That gives you everything you need to use below, and free's you from any restrictions (now or future changes) from the AsyncDockerCmd (or new subclasses) interface.  It will also make unit-testing super-duper easy.