type ErrorChannel … // SendError sends an error without blocking the sender. func (e *ErrorChannel) SendError(err error) { … } // SendErrorWithCancel sends an error without blocking the sender and calls // cancel function. func (e *ErrorChannel) SendErrorWithCancel(err error, cancel context.CancelFunc) { … } // ReceiveError receives an error from channel without blocking on the receiver. func (e *ErrorChannel) ReceiveError() error { … } // NewErrorChannel returns a new ErrorChannel. func NewErrorChannel() *ErrorChannel { … }