Just to note on the above: even if the VIEWER does not have the App installed, DataRequest will still return a ResponseItem object (it used to come back null) -- the DataResponse will return .hadError() as true, and the ReponseItem for VIEWER will return "Unauthorized" (I believe, it may not be exactly that) on a .getErrorMessage() call.
As far as the Install/Uninstall callback being removed -- I don't think that's likely to happen; they're a part of the OpenSocial 0.7 Gadget specification. And I'm sure the Install callback get pings before the browser is redirected to the Canvas, but there could be a potential problem (that people have already noticed), that the permission granted by the installation does not propogate down to the API servers before a DataRequest or RESTful API request hits the server -- but the standard way to handle that is to simply re-request until the permission is granted.
If you're worried about your own servers having the same problem, then I suggest you use a similar solution; obviously there's a chance that the Install-ping might not reach your servers before a request generated by the Canvas. So keep trying that request until your server grants similar permission.