Yes exactly, each leaf is a new transaction.
However, since Mam transactions do not have any “value”, they do not actually need any validation. They are immediately available to fetch after they are published
Mam.fetch is not an async function, instead use the callback. You can make any “callback style” function into an async function by wrapping the call in a return new Promise((resolve,reject)=> .... Do a bit of research about Promises, this is a very common and useful pattern in Nodejs.
But i think your problem is secretKey needs to be converted to trytes
Which operating system did you install it on?
Did you configure anything so far? (for example changed any ports or added any neighbors so far?)
By the way this reminds me of something similar I have opened an issue a while back https://github.com/iotaledger/iri/issues/1678
Maybe you've added a neighbor with an invalid port? Please check /etc/default/iri