WiServer sends POST and GET requests with an HTTP 1.0 header, so the server should honor that and close the connection when it's done sending its response per the HTTP 1.0 conventions, but a lot of servers just assume HTTP 1.1 and leave it open.
The 'right' way to fix this would be for WiServer to read the header of the response data to get the length, and then close the connection once it has received all of the data. Currently WiServer just passes all of the returned data to the sketch (parsing the header can be tricky since it may arrive in the form of several packets), but this might be a good enhancement for the future.
If your callback function can tell when it's received all of the response data, then the manual call to uip_close() is a good workaround.