func NewReaderLease(reader io.Reader) *ReaderLease {
	rm := &ReaderLease{
		reader: reader,
		bytec:  make(chan byte),
	}
	go func() {
		for {
			p := make([]byte, 1)
			n, err := rm.reader.Read(p)
			if err != nil {
				return
			}
			if n == 0 {
				panic("non eof read 0 bytes")
			}
			rm.bytec <- p[0]
		}
	}()
	return rm
}
NewReaderLease returns a new ReaderLease that begins reading the given
io.Reader.
package expect
import (
	"context"
	"fmt"
	"io"
)
type ReaderLease struct {
	reader io.Reader
	bytec  chan byte
}