func (b *messageBuffer) store(m *message) {
	b.mu.Lock()
	defer b.mu.Unlock()
	if len(b.backlog) == 0 {
		select {
		case b.c <- m:
			return
		default:
		}
	}
	b.backlog = append(b.backlog, m)
}
store the message in ch, if empty, otherwise in queue.
package rpcc
import (
	"context"
	"encoding/json"
	"errors"
	"sync"
)
var (
	ErrStreamClosing = errors.New("rpcc: the stream is closing")
)
type message struct {
	method string
	data   []byte
	next   func()
}
type messageBuffer struct {
	c       chan *message
	mu      sync.Mutex  
	backlog []*message
}
func newMessageBuffer() *messageBuffer {
	return &messageBuffer{
		c: make(chan *message, 1),
	}
}