code: func ToProtoMsgErrChan(ch chan ProtoMessageErr, opts ...interface{}) func(ProtoMessageErr) {
  
  	timeout, logger := ParseOpts(opts...)
  
  	return func(msg ProtoMessageErr) {
  		select {
  		case ch <- msg:
  		case <-time.After(timeout):
  			logger.Warn("Unable to deliver message")
  		}
  	}
  }
docs: // ToProtoMsgErrChan allows to receive error messages through channel instead
  // of callback.