I agree with Travis here, de-duping calls would be unintuitive for anyone unfamiliar with the implementation. The other issue is that appending to an internal list allows for arbitrary ordering of callback execution.