Estranheza do código de retorno do procedimento armazenado do SQL Server
Ao brincar com o procedimento, posso obter um retorno -6, se inserir um nulo em foo.KeyCol e remover o RAISERROR na captura interna. Isso é algo que o SQL Server está fazendo e está documentado aqui:Return Values from Stored Procedimentos
.