I really don't like it either. But Require JS does provide some modularity for JS, even if we are not using it's async auto loading of JS scripts. That's why it was chosen for all other XModules the Blades team developed. Including the rewrite of the Video player.

Originally, LTI was written as a simple self invoked function. Then @jmclaus suggested [Why not use requireJS as in GST, WordCloud, Video i.e. have ...](https://github.com/edx/edx-platform/pull/1811#discussion_r8075296). Because LTI is not fully implemented - many things are defined in the LTI v1.1 spec that we are not supporting at this time - I thought that it is best to convert it to RequireJS format. Later on it will be easier to add new functionality.