There methods are inherently unreliable because they can not guarantee that the getlasterror call will return the result of the write that it claims to. It's entirely possible that another write got through on the same socket in between.
While this can currently work in concert with DB.requestStart/requestDone (since it guarantees exclusive use of the socket by one thread), that will no longer be the case if the driver implements support for SERVER-9038.