Is this local variable necessary?  Can't you just use cbd->cb in the CALLBACK_WITH_FAILURE() and dial() calls?