Very interesting article. May I suggest trapping the error that comes back from sys.dm_exec_describe_first_result_set_for_object in the event there is an error. In my testing, all of the procedures I had returned no results in your procedure, other than the name. However, when querying dm_exec_describe_first_result_set_for_object independently, I see an error and it appears it is because I'm using temp tables in my procedure.
Here's an example of the error_message column's value:
"The metadata could not be determined because statement 'INSERT INTO #tblMassInsert (StartTime, EndTime, Number1, Number2)
VALUES(@StartTime, NULL, @Cu' in procedure 'spMASSInsert_DNB' uses a temp table."
Hope that helps. Great work so far!