code: func (c *IO) ReadWithParams(v *IOReadParams) (bool, string, bool, error) {
  	resp, err := gcdmessage.SendCustomReturn(c.target, c.target.GetSendCh(), &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "IO.read", Params: v})
  	if err != nil {
  		return false, "", false, err
  	}
  
  	var chromeData struct {
  		Result struct {
  			Base64Encoded bool
  			Data          string
  			Eof           bool
  		}
  	}
  
  	if resp == nil {
  		return false, "", false, &gcdmessage.ChromeEmptyResponseErr{}
  	}
  
  	// test if error first
  	cerr := &gcdmessage.ChromeErrorResponse{}
  	json.Unmarshal(resp.Data, cerr)
  	if cerr != nil && cerr.Error != nil {
  		return false, "", false, &gcdmessage.ChromeRequestErr{Resp: cerr}
  	}
  
  	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
  		return false, "", false, err
  	}
  
  	return chromeData.Result.Base64Encoded, chromeData.Result.Data, chromeData.Result.Eof, nil
  }
docs: // ReadWithParams - Read a chunk of the stream
  // Returns -  base64Encoded - Set if the data is base64-encoded data - Data that were read. eof - Set if the end-of-file condition occured while reading.