return null messageId if it's isAsync