Correct. That's partly deliberate.
the Cancel embed is really just there for comfort value, you can't put any really "serious" code in there.
Why not? Well because the user may just turn off their browser, they may type in another URL, or they may just choose another menu item. Navigation in a browser is always forwards, and you can't _guarantee_ a certain path through the program the way you can with windows.
You are therefore better off "handling" the Cancel in a more "complete" way.
So, start by assuming that if you do the "Insert on form open" approach (which you have to do if you want to add Child records when inserting the parent) then you should also have some sort of "completed" field. When the user clicks on _save_ the record becomes "real".
Some people use a temp table for this, copying the record to the actual table when it is saved, but personally I don't do that. Rather I just use a single "real" field, and have a background process that cleans out "old, unreal" records from time to time.
Cheers
Bruce