You really shouldn't be using a GET operation.
I would use a POST operation and return a 201 Created with a link to a resource which describes the new state of the system.
For example, I would redirect to a shutdown status resource:
POST /stop/123
...
201 CREATED
Location:
http://acme.com/shutdownstatus/123
The the client can poll the resource to check on the status
GET /shutdownstatus/123
...
<shutdown xmlns="http://schemas.serverapp.com/shutdown">
<status>pending</status>
<message>Looks good so far</message>
</shutdown>
This new GET operation will always return the state of the server for that id. That way you know if it was shutdown correctly or not. If server shutdown takes a long time, the client could poll that resource to check on different shutdown statuses until it is complete. This way you can return from the original server shutdown request quickly.
If an exception was thrown in your process, I wouldn't return it to the client, I would have a status for the exception in the server status resource. I always avoid making a client handle an exceptional case when I can represent it as a resource. This allows you to change the resource freely, such as when the exception causing method is changed or fixed, without changing the external API.