in lib/src/stream_queue.dart [319:337]
Future<bool> withTransaction(
Future<bool> Function(StreamQueue<T>) callback) async {
var transaction = startTransaction();
var queue = transaction.newQueue();
bool result;
try {
result = await callback(queue);
} catch (_) {
transaction.commit(queue);
rethrow;
}
if (result) {
transaction.commit(queue);
} else {
transaction.reject();
}
return result;
}