Is this intended to be a user-error or an assert? All callers have to check the return value so may just `while(proto)` below.