Inversion of control is a fantastic way to side-step the issue of making an incorrect assumption about the future use cases of our reusable code.
Kent C. Dodds
https://stackoverflow.com/questions/3058/what-is-inversion-of-control
https://en.wikipedia.org/wiki/Inversion_of_control
https://kentcdodds.com/blog/inversion-of-control