Nevermind. Turns out m [func] () is indeed correct notation.
Implicitly this does m.foo()
So therefore, I need to add self to the function if I wanted to add any parameters into there.
function m:callFunc(func, arg1, arg2)
m [func] (self, arg1, arg2) -- good!
end)
Disregard this post.