Lets say an operation could take 2 to 10 minutes on the server to perform, for example to update an index which is time consuming. 
Would you perform the operation while holding the request? ie not sending a HTTP Response until the operation has finished? And if the client/browser drops the request, just continue with the operation anyway? 
What is the alternative? To kick-off the operation, and response with "long-time operation kicked off" ? What if the operation fails mid-way how would the client know? Maintain a server-side "status" of the operation?
Thanks
For requests that you know will take a long time (more than a few seconds) to process, you must assume at minimum that the connection may be forcibly severed by a firewall.
I would say you should implement a queue system on the backend.  The request to perform the operation becomes a request to queue the operation.  When the operation is actually completed, you can either wait for the client to poll, or proactively notify them somehow.  For a browser, you'll pretty much have to either poll or send an e-mail.
Should you hold a HTTP request while the server performs a time consuming operation? Or let the request go?