I used to do the same thing only worse in my code, namely chaining extensions to exports...sometimes four or more deep. This is a habit I brought from statically typed OOP.
I don't do it anymore in JS, because it made refactoring a nightmare. The "problem" is...unless you have really good unit test coverage...the chain can easily be broken and you don't find out until way up the callstack. All it takes is the order changing or something inserted in between. That's the price of prototypes in a dynamic language...no compiler can tell if you really mean what you wrote.
So now what I do is at most one layer of chaining...a common base and then every extension is self contained even though that means a little more typing. It's working for me. So I think what you have is fine, as long as you don't go to a third level.