getImageSizeFromUrl(imagePath) {
        if (this.storageUtils.isLocalImage(imagePath)) {
            // don't make a request for a locally stored image
            return this.getImageSizeFromStoragePath(imagePath);
        }

        // CASE: pre 1.0 users were able to use an asset path for their blog logo
        if (imagePath.match(/^\/assets/)) {
            imagePath = this.urlUtils.urlJoin(this.urlUtils.urlFor('home', true), this.urlUtils.getSubdir(), '/', imagePath);
        }

        debug('requested imagePath:', imagePath);

        return this._imageSizeFromUrl(imagePath).then((dimensions) => {
            debug('Image fetched (URL):', imagePath);

            return {
                url: imagePath,
                width: dimensions.width,
                height: dimensions.height
            };
        }).catch((err) => {
            if (err.code === 'URL_MISSING_INVALID') {
                return Promise.reject(new errors.InternalServerError({
                    message: err.message,
                    code: 'IMAGE_SIZE_URL',
                    statusCode: err.statusCode,
                    context: err.url || imagePath
                }));
            } else if (err.code === 'ETIMEDOUT' || err.code === 'ESOCKETTIMEDOUT' || err.code === 'ECONNRESET' || err.statusCode === 408) {
                return Promise.reject(new errors.InternalServerError({
                    message: 'Request timed out.',
                    code: 'IMAGE_SIZE_URL',
                    statusCode: err.statusCode,
                    context: err.url || imagePath
                }));
            } else if (err.code === 'ENOENT' || err.code === 'ENOTFOUND' || err.statusCode === 404) {
                return Promise.reject(new errors.NotFoundError({
                    message: 'Image not found.',
                    code: 'IMAGE_SIZE_URL',
                    statusCode: err.statusCode,
                    context: err.url || imagePath
                }));
            } else {
                if (errors.utils.isGhostError(err)) {
                    return Promise.reject(err);
                }

                return Promise.reject(new errors.InternalServerError({
                    message: 'Unknown Request error.',
                    code: 'IMAGE_SIZE_URL',
                    statusCode: err.statusCode,
                    context: err.url || imagePath,
                    err: err
                }));
            }
        });
    }
@description read image dimensions from URL
@param {string} imagePath as URL
@returns {Promise<Object>} imageObject or error