talk method

Future<void> talk(
  1. String subject,
  2. Object? data,
  3. ReplyFn? onAck, {
  4. Map<String, Object>? headers,
  5. Duration? timeout,
})

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);
}