Hi Michael
You are absolutely right for pointing out this important issue about losing prototype chain! I wrote about this problem at the very end of the article and now added optimal solution by using method of Constructors calling themselves.
Thanks!
Would still probably lean into the spread for the nested call... since everything except for IE11 supports it now.
https://caniuse.com/#feat=mdn-javascript_operators_spread_spread_in_function_calls
Same goes for classes actually.