No, it is in msg.payload if msg.topic is delay.
You didn't need the first lines because it set a variable to msg.delay, and msg.delay at this point is not set.
You didn't need the second line because it wrote (using the obsolete context format) to a context variable called 'payload' which you never read back.
You didn't need the third line because you can just use msg.topic directly in the next line.
The flow in your last post looks good, except that you don't need the default delay node, you can set the default in line 11 in the function node which says 'if you haven't already set a delay time in the context then set it to this value'.