A request that sends mail, writes an invoice and calls an ERP will time out on the worst day, which is the day you needed it. I move that work to Laravel Queues, Redis, RabbitMQ or Kafka depending on how many consumers are waiting.
Retry is not infinite. A poison message has to leave the main lane. Dead-letter handling on the ERP connectors is what kept one bad payload from stalling the sync between ERP, CRM and accounting.
The worker is allowed to fail. The API is not allowed to wait for it. The user sees the accepted state, and the audit log shows whether the job finished.