Hi,
beim zweiten Aufruf von handle wird eine neue function down erzeugt.
Das ist nicht mehr die selbe wie die vorher zugewiesene, und kann daher auch nicht entfernt werden.
Zum Verständnis evtl einfach mal folgendes ausführen:
var foo = function(){return 1+1;},
bar = function(){return 1+1;},
baz = foo;
alert(foo === bar);
alert(foo === baz);
Ersteres gibt false aus, da die Funktionen zwar genau das gleiche tun, aber eben nicht die selbe Funktion _sind_.
Zweiteres hingegen true, da es zwar Variablen unterschiedlichen Namens sind, beide aber die gleiche function referenzieren.
Wie genau du das am geschicktesten löst kann ich so ganz ohne Zusammenhang schlecht sagen.
~dave