I installed some new checkout rules in production and the problem is now happening in production. Request rules were not changed.
NEW information: hold, page, etc. requests fail IF the patron has any current loans.
They succeed if the patron does not have any current loans.
See where this was reported in test 3.0.15. Production is at 3.0.14 with patches.
The stack trace in production looks the same as test.