Use callbacks instead of promises for loaders

Also avoids some redundant calls to _loadSource
Extract getLoader method
Updated loader signature