[fix] if there is no payload to return, default to an empty object