action.undefine now returns a promise