make sure success callback will not trigger multiple times