If the callback is omitted the returned Promise will resolve with the options for given URL, calling any Promise.then() callback.
If the callback is specified, it will be called with the options for the given URL and the returned Promise will resolve with the return value of given callback.