getInstance() {
        const mailgunConfig = this.#getConfig();
        if (!mailgunConfig) {
            return null;
        }

        const formData = require('form-data');
        const Mailgun = require('mailgun.js');

        const baseUrl = new URL(mailgunConfig.baseUrl);
        const mailgun = new Mailgun(formData);

        return mailgun.client({
            username: 'api',
            key: mailgunConfig.apiKey,
            url: baseUrl.origin,
            timeout: 60000
        });
    }
Returns an instance of the Mailgun client based upon the config or settings values

We don't cache the instance so we can always get a fresh one based upon changed settings
or config values over time

Note: if the credentials are not configure, this method returns `null` and it is down to the
consumer to act upon this/log this out

@returns {import('mailgun.js')|null} the Mailgun client instance