fix multiple callback called bug