run callback receives err and result