code: func (c *Client) read(codec ServerCodec) {
  	for {
  		msgs, batch, err := codec.Read()
  		if _, ok := err.(*json.SyntaxError); ok {
  			codec.Write(context.Background(), errorMessage(&parseError{err.Error()}))
  		}
  		if err != nil {
  			c.readErr <- err
  			return
  		}
  		c.readOp <- readOp{msgs, batch}
  	}
  }
docs: // read decodes RPC messages from a codec, feeding them into dispatch.