(message) => {} is an arrow function and async message => {} is an async function
The essential difference is that in an async function you can await for asynchronous code completion.
And as you can read in mdn page for arrow function expressions:
// Parentheses are optional when there's only one parameter name:
(singleParam) => { statements }
singleParam => { statements }
so
async message => {CODE}
// is equal to
async (message) => {CODE}
and
(message) => {}
// is equal to
message => {}
What's important is to be consistent in the way you use parentheses, and the best way to achieve 100% consistency in your code is to use a tool like prettier.