function measure(box) {
  const width = box.width + box.borderLeft + borderRight;
  const position = yield width;
  return { left: position.left + box.borderLeft };
}

const measuredBox = measure(myBoxProps);
const width = measuredBox.next().value;
const initialOffset = measuredBox.next({ left: 0 });
// oops, now I need a different position
const replayedMeasuredBox = measure(myBoxProps);
replayedMeasuredBox.next(); // wasted
const shiftedOffset  = replayedMeasuredBox.next({ left: 10 });