You can use simple node processing callback to do that. I've created simpl package containg such callback, hyphencomma.sty:
\ProvidesPackage{hyphencomma}
\RequirePackage{luacode}
\begin{luacode*}
local glyph_id = node.id "glyph"
local penalty_id = node.id "penalty"
local hyphenc = string.byte "-"
local commac = string.byte ","
local function prevent_hyphencomma(head)
for n in node.traverse_id(glyph_id,head) do
if n.char == hyphenc then
-- we need to find node after the next node. directly following is automaticaly inserted discretionary
local next = n.next.next
if next.id == glyph_id and next.char == commac then
-- create penalty node
local penalty = node.new("penalty")
penalty.penalty = 10000
-- remove discretionary
head = node.remove(head,n.next)
-- insert penalty
head = node.insert_after(head, n, penalty)
end
end
end
return head
end
luatexbase.add_to_callback("pre_linebreak_filter", prevent_hyphencomma, "Prevent hyphen comma")
\end{luacode*}
\endinput
The prevent_hypencomma function processes nodes of each paragraph before the linebreak. There are many node types, but most important for are glyph nodes, which contains particular characters. To match nodes of this type, we must know it's node id, which we can find with:
local glyph_id = node.id "glyph"
with node.traverse_id iterator, we process the node list, filtering only nodes with glyph id. Each node has some fields, depending on its type. We can find glyphs character code with char field. It is character number, not string, so we must test for hyphen char code, not -. For ASCII characters, we can get the char code with string.byte function.
After each hyphen glyph, discretionary node is inserted, so we need to skip it to find next node and test it whether it is comma glyph. If it is, we must remove the discretionary node and insert penalty to prevent the linebreak.
The result:

temperatur"~,I guess. – egreg Sep 21 '15 at 21:37