Refact InternalLoader to use promises

Refact InternalLoader to use promises instead of ad-hoc listener interface.