I am doubtful that a CTE being present in a proc will cause this error. Check the driver you are using. A TDS error points to the possibility that the proc is returning a result set that the driver cannot handle, e.g. a data type that did not exist in the version of the driver being used like VARCHAR(MAX).
There are no special teachers of virtue, because virtue is taught by the whole community. --Plato