 		[Test(async)]
 		public function add_one_listener_and_dispatch_then_listener_remove_itself_using_event_signal():void
 		{
-			completed.add(addAsync(remove_myself_from_signal, 10));
+			delegate = addAsync(remove_myself_from_signal, 10);
+			completed.add(delegate);
 			completed.dispatch(new GenericEvent());
 		}
 		

		{
			completed.removeAll();
			completed = null;
		}

		[Test]

		{
			assertEquals('listener still in signal', 1, e.signal.numListeners);
			
			// Can't remove(arguments.callee) because it's wrapped with delegate created by addAsync().
			e.signal.remove(delegate);
			
			assertEquals('listener removed from signal', 0, e.signal.numListeners);
		}
