The routines themselves are well designed, and the interface represented by the module options is fine.
What would be good to clean up are the "helpers" and wrappers that have gotten to be a bit incomprehensible.
Several deferred modules are exposed as lib members when realistically these are only useful for internal operations.
If you want to expose them use something like a _private.myDeferred = ... or _internal.myDeferred = ... attr, or make them standalone files.
Focus on exposing the ones users actually want with a single helper, and a single type.
The routines themselves are well designed, and the interface represented by the module options is fine. What would be good to clean up are the "helpers" and wrappers that have gotten to be a bit incomprehensible.
Several deferred modules are exposed as
lib
members when realistically these are only useful for internal operations. If you want to expose them use something like a_private.myDeferred = ...
or_internal.myDeferred = ...
attr, or make them standalone files.Focus on exposing the ones users actually want with a single helper, and a single type.