To prevent the func:result from throwing a wobbly, you must ensure you encapsulate your return value in a variable where you would otherwise return the result. Thus func:result:
<func:result>
<xsl:for-each select="myns:isInteresting(exsl:node-set($nodes)/Thing)">
<xsl:value-of select="@name"/>
</xsl:for-each>
</func:result>
Becomes:
<xsl:variable name="ret">
<xsl:for-each select="myns:isInteresting(exsl:node-set($nodes)/Thing)">
<xsl:value-of select="@name"/>
</xsl:for-each>
</xsl:variable>
<func:result select="$ret"/>