talk method
Implementation
Future<void> talk(
String subject,
Object? data,
ReplyFn? onAck, {
Map<String, Object>? headers,
Duration? timeout,
}) async {
final cmp = Completer<void>();
onAck ??= (msg) async => null;
_talking[onAck] = cmp;
_speak(subject, data, headers, onAck);
final ret = cmp.future;
unawaited(ret.then((ev) => _talking.remove(onAck)));
return timeout == null ? ret : ret.timeout(timeout);
}