Use task queue to process sale
The process method of sale is idempotent and does not need to be run synchronously when triggered by other documents.
Also the confirmation of the sale could post a process task after a configured delay (this will replace the cron job). This way we can have a grace period to reset to draft.