It is true for any function call in any language. The SQL statement is wrapped in an implicit transaction, and function calls execute within that implicit transaction.
At this time, PG doesn't support nested transactions so you can't wrap
the calls inside your pl/tcl function with begin/end.