diff --git a/metadapta.go b/metadapta.go index 392ee8b..2fda48b 100644 --- a/metadapta.go +++ b/metadapta.go @@ -181,15 +181,18 @@ func (this *transA) Send(method uint16, data []byte) error { } func (this *transA) Receive() (method uint16, data []byte, err error) { - message, ok := <- this.incoming.Receive() - if !ok { - if this.parent.err == nil { - return 0, nil, fmt.Errorf("could not receive message: %w", io.EOF) - } else { - return 0, nil, this.parent.err + receive := this.incoming.Receive() + if receive != nil { + if message, ok := <- receive; ok { + return message.method, message.payload, nil } } - return message.method, message.payload, nil + + if this.parent.err == nil { + return 0, nil, fmt.Errorf("could not receive message: %w", io.EOF) + } else { + return 0, nil, this.parent.err + } } type incomingMessage struct {