The two outcomes IStream.feed can return — Complete and
Incomplete, the ones that leave a stream usable.
Invalid is missing on purpose, and the type is the statement: this port puts
a refusal on the error channel (CORELIB_PLAN §6.3's second option), so a
malformed message throws rather than returning, and a caller switching on the
return value has no unreachable arm to write. The refusal is not lost by being
absent here — it arrives as a SofabError whose code says which
refusal it was, which is more than the outcome triple can express: a
LimitExceeded rejection has no value among the three at all.
The two outcomes IStream.feed can return —
CompleteandIncomplete, the ones that leave a stream usable.Invalidis missing on purpose, and the type is the statement: this port puts a refusal on the error channel (CORELIB_PLAN §6.3's second option), so a malformed message throws rather than returning, and a caller switching on the return value has no unreachable arm to write. The refusal is not lost by being absent here — it arrives as a SofabError whosecodesays which refusal it was, which is more than the outcome triple can express: aLimitExceededrejection has no value among the three at all.