fix callback return always call