Load image data asynchronously with promises