I don't think this is right. If the callback fails, why would you try to call the callback again?