I see a list of alternatives considered, but no discussion of pros/cons or reasons why these are alternatives and not the chosen approach. I'm particularly interested why a syntax approach was discarded, in particular a const await that could then avoid the intermediate object, like
const await {
shape = getShape(),
color = getColor()
};