The problem is that design of the language, in this area, is
unintuitive
and unnatural to me. The multiple-results documentation in PiL reads
like
a checklist of special cases to be memorized. I'm not saying it's
something

that should or could be changed; it just feels forced.

PiL says:

1) Lua always adjusts the number of results from a function to the
circumstances of the call.

2) When we call a function as a statement, Lua discards all of its
results.

3) When we use a call as an expression, Lua keeps only the first
result.

4) We get all results only when the call is the last (or the only)
expression in a list of expressions.

It seems pretty clear to me. The short summary (leaving out the obvious
case of function call statements) is:

1) Lua expects an expression to yield exactly one value except when the
expression is the last (or only) expression in an expression-list, in
which case it yields all of its values.

2) Expression lists (as a whole) are adjusted to the context of an
expression list, by either discarding extra results, or by appending a
sufficient number of nils.

Rule 2 means that:
a, b = foo()

will adjust foo() to 2 return values, since clearly two values are
expected (and since foo() is the only expression in an expression
list.)

The one apparent exception to this is numeric for statements, because
"a,b,c" in: