Andrew's answer helped me out a lot. I wanted to share the code I ended up using for the stripe payment method:
app/code/Namespace/Module/view/frontend/web/js/stripe_payments_mixin.js
define([
'uiRegistry',
'Magento_Checkout/js/model/quote',
'mage/translate',
], function (uiRegistry,quote, $t) {
'use strict';
var mixin = {
placeOrder: function () {
uiRegistry.get('checkout.steps.billing-step.payment.payments-list.stripe_payments-form').updateAddress();
if ( quote.billingAddress() && quote.billingAddress().canUseForBilling() ) {
return this._super();
} else {
return this.showError($t('Please complete your billing address.'));
}
},
isBillingAddressSet: function () {
return true;
},
};
return function (target) {
return target.extend(mixin);
};
});
app/code/Namespace/Module/view/frontend/requirejs-config.js
var config = {
config: {
mixins:
'StripeIntegration_Payments/js/view/payment/method-renderer/stripe_payments': {
'Namespace_Module/js/stripe_payments_mixin': true
}
}
}
};
In Stripe's case isBillingAddressSet needed modified to so the Place Order button would not be disabled.