Found while working on amaranth/rfcs#15. The new code is also robust in the face of RFC 15 itself (the value returned by Signal will change but that will save work for the programmer).