You may wonder, why not using throw new Error() instead of throw Abort()?
By using throw Abort(), we are telling Telefunc that this is an error that is expected to happen (when a third-party makes an invalid or unprivileged telefunction call). Whereas throw new Error() is unexpected: it should never happen and, if it does happen, then it's a bug in our backend code.
It is expected that throw Abort() can occur, since onCommentDelete() is a public function anyone can call while not being an admin.
Whereas throw new Error('Wrong getUser() usage') is expected to not occur: if we make a typo and call getUser({ permission: 'admni' }) then it's an internal bug in our backend that we should fix.