loadImage = (url, options = {}) => {
    return new Promise((resolve, reject) => {
        const $img = new Image()

        if (options.crossOrigin) {
            $img.crossOrigin = options.crossOrigin
        }

        const loadCallback = () => {
            resolve({
                element: $img,
                ...getImageMetadata($img),
            })
        }

        if($img.decode) {
            $img.src = url
            $img.decode().then(loadCallback).catch(e => {
                reject(e)
            })
        } else {
            $img.onload = loadCallback
            $img.onerror = (e) => {
                reject(e)
            }
            $img.src = url
        }
    })
}
Load the given image.

@param {string}  url         - The URI to lazy load into $el.
@param {object}  options     - An object of options
@return {void}