3 points
Like most things in life, context matters. In the OP it seems like the check
function is used specifically so it could raise a PaymentException
if the payment hasn’t been received… That’s not a “forgiveness/permission” context, this is a yes or no question, hence should have been an if.