Canvas LMS with an API for ancillary learning tool components to register asynchronous callbacks on a defined set of functions.