I used to work at a medium sized firm (~2B revenue) and we had a policy where the candidate had an offer or a rejection (with reason) before they left the office.
It was hard turning folks down, and it pushed us to have very crisp reasons for saying no, but I think it made us better interviewers and more humane in the process.