function load(url, callback, opt) {
    opt = (opt === undefined || opt === null) ?  {} : opt;

    return new Promise(function (resolve, reject) {
        loadFromUrl(url, function(err, arrayBuffer) {
            if (err) {
                if (callback) {
                    return callback(err);
                } else {
                    reject(err);
                }
            }
            var font;
            try {
                font = parseBuffer(arrayBuffer, opt);
            } catch (e) {
                if (callback) {
                    return callback(e, null);
                } else {
                    reject(e);
                }
            }
            if (callback) {
                return callback(null, font);
            } else {
                resolve(font);
            }
        });
    });
}
Asynchronously load the font from a URL or a filesystem. When done, call the callback
with two arguments `(err, font)`. The `err` will be null on success,
the `font` is a Font object.
We use the node.js callback convention so that
opentype.js can integrate with frameworks like async.js.
@alias opentype.load
@param  {string} url - The URL of the font to load.
@param  {Function} callback - The callback.