execute method
Executes a message.
Fails if no response is received within the timeout.
If available, use high-level API methods such as ClientImgExtension.uploadImage instead. This low-level method requires building the message and decoding the response (including error codes) yourself.
Implementation
Future<Message> execute(Message msg, Duration timeout) =>
_execute(_createPacket(msg), timeout).then(_createMessage);