code: func (s *BufferedSender) Send(data []byte) (int, error) {
  	s.runmx.RLock()
  	if !s.running {
  		s.runmx.RUnlock()
  		return 0, fmt.Errorf("BufferedSender is not running")
  	}
  
  	s.withBufferLock(func() {
  		blen := s.buffer.Len()
  		if blen > 0 && blen+len(data)+1 >= s.flushBytes {
  			s.swapnqueue()
  		}
  
  		s.buffer.Write(data)
  		s.buffer.WriteByte('\n')
  
  		if s.buffer.Len() >= s.flushBytes {
  			s.swapnqueue()
  		}
  	})
  	s.runmx.RUnlock()
  	return len(data), nil
  }
docs: // Send bytes.