grpc/streambuffer/streambuffer.go
func (s *Stream) Recv(recv func() interface{}) <-chan interface{} {
	s.mu.Lock()
	s.recvFunc = recv
	buf := make(chan interface{}, cap(s.sendBuffer))
	s.recvBuffer = buf
	s.mu.Unlock()
	return buf
}
func (s *Stream) Recv(recv func() interface{}) <-chan interface{} {
	s.mu.Lock()
	s.recvFunc = recv
	buf := make(chan interface{}, cap(s.sendBuffer))
	s.recvBuffer = buf
	s.mu.Unlock()
	return buf
}
// Recv returns a buffered channel (of the size given to New) that receives messages from the stream.
// The given recv func should return a new proto of the type that you want to receive
// If you want to receive, Recv() must be called BEFORE Run()