2025-11-05 17:04:23 -03:00

25 lines
562 B
JavaScript

export default function procedure(entity, stanza = null, handler) {
return new Promise((resolve, reject) => {
function onError(err) {
entity.removeListener("nonza", listener);
reject(err);
}
function done(...args) {
entity.removeListener("nonza", listener);
resolve(...args);
}
async function listener(element) {
try {
await handler(element, done);
} catch (err) {
onError(err);
}
}
stanza && entity.send(stanza).catch(onError);
entity.on("nonza", listener);
});
}