optimize WeakEventSource