do not let the callback be invoked more than once