Can String.prototype.matchAll() return overlapping matches?

Is it possible to pass String.prototype.matchAll a regex that will return overlapping matches? Every idea I’ve come up with chooses one match when multiple could work:

function logMatches(str, re) {
  console.log(`"${str}".matchAll(/${re.source}/${re.flags}) = [`);
  [...str.matchAll(re)].map(matchProperties).forEach((props) => {
    console.log("t", props);
  })
  console.log("];");
  console.log();
}

function matchProperties(match) {
  return "{ " + (Object.getOwnPropertyNames(match).map((propName) => {
    return propName + ": " + JSON.stringify(match[propName])
  }).join(", ")) + " }, // Note: this element is an Array";
}

logMatches("foo bar baz", /foo|baz/g); // no overlap expected
logMatches("foo bar baz", / .*/g);
logMatches("foo bar baz", /b.*/g);
logMatches("foo bar baz", /b.*?/g);  // no overlap expected
logMatches("foo bar baz", /ba.*$/g);
logMatches("foo bar baz", /ba| .* /g);

Here’s what I expected to see from that last example:

"foo bar baz".matchAll(/ba| .* /g) = [
     { 0: " bar ", length: 1, index: 3, input: "foo bar baz", groups: undefined }, // Note: this element is an Array
     { 0: "ba", length: 1, index: 4, input: "foo bar baz", groups: undefined }, // Note: this element is an Array
     { 0: "ba", length: 1, index: 8, input: "foo bar baz", groups: undefined }, // Note: this element is an Array
];

Is this the way matchAll works or does it have something to do with regular expressions in general? Or, and this might be more likely, is a bug in my example code?