If this guy sued for the million, it would be in a court of law, not a court of contract theory. Since the law still recognizes unilateral contracts, and courts still enforce them, it doesn’t matter what modern contract theory says.
As for your second point, there’s nothing a court could order restored to the plaintiff, and there’s no obvious way to value the amount by which the defendant was enriched (if at all). So, no.