Framework: DataRequest implementation

it is really where do we do error check and possible correction. The main idea is the earlier we handle these things, the easier it is to understand the code. And most google system follow this idea where if we catch something wrong, we simply log it and abort. 

If we have error, then we need to pass the error to the other side of communication. but because these two parts are all falling into app developer side. I think this is essentially simplify the design. We can follow this, and go as far as possible, and refactor it if we have too.