An image loader with promises