diff --git a/packages/events/lib/procedure.js b/packages/events/lib/procedure.js
index 4f2b52f5..47614d3d 100644
--- a/packages/events/lib/procedure.js
+++ b/packages/events/lib/procedure.js
@@ -1,24 +1,24 @@
export default function procedure(entity, stanza = null, handler) {
return new Promise((resolve, reject) => {
- function stop(...args) {
+ 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, stop);
+ await handler(element, done);
} catch (err) {
- reject(err);
- entity.removeListener("nonza", listener);
+ onError(err);
}
}
- stanza &&
- entity.send(stanza).catch((err) => {
- entity.removeListener("nonza", listener);
- reject(err);
- });
+ stanza && entity.send(stanza).catch(onError);
entity.on("nonza", listener);
});
}
diff --git a/packages/sasl/index.js b/packages/sasl/index.js
index ec0bb93c..162bbe81 100644
--- a/packages/sasl/index.js
+++ b/packages/sasl/index.js
@@ -37,7 +37,7 @@ async function authenticate({ saslFactory, entity, mechanism, credentials }) {
{ xmlns: NS, mechanism: mech.name },
encode(mech.response(creds)),
),
- async (element, stop) => {
+ async (element, done) => {
if (element.getNS() !== NS) return;
if (element.name === "challenge") {
@@ -58,7 +58,7 @@ async function authenticate({ saslFactory, entity, mechanism, credentials }) {
}
if (element.name === "success") {
- return stop();
+ return done();
}
},
);
diff --git a/packages/sasl2/index.js b/packages/sasl2/index.js
index 185b71b9..83641d29 100644
--- a/packages/sasl2/index.js
+++ b/packages/sasl2/index.js
@@ -45,13 +45,13 @@ async function authenticate({
userAgent,
...streamFeatures,
]),
- async (element, stop) => {
+ async (element, done) => {
if (element.getNS() !== NS) return;
if (element.name === "challenge") {
mech.challenge(decode(element.text()));
const resp = mech.response(creds);
- entity.send(
+ await entity.send(
xml(
"response",
{ xmlns: NS, mechanism: mech.name },
@@ -87,7 +87,7 @@ async function authenticate({
feature?.[1]?.(child);
}
- return stop();
+ return done();
}
},
);
diff --git a/packages/stream-management/index.js b/packages/stream-management/index.js
index ea8749d0..9f162ce3 100644
--- a/packages/stream-management/index.js
+++ b/packages/stream-management/index.js
@@ -19,9 +19,9 @@ function makeResumeElement({ sm }) {
}
function enable(entity, sm) {
- return procedure(entity, makeEnableElement({ sm }), (element, stop) => {
+ return procedure(entity, makeEnableElement({ sm }), (element, done) => {
if (element.is("enabled", NS)) {
- return stop(element);
+ return done(element);
} else if (element.is("failed", NS)) {
throw XMPPError.fromElement(element);
}
@@ -29,9 +29,9 @@ function enable(entity, sm) {
}
async function resume(entity, sm) {
- return procedure(entity, makeResumeElement({ sm }), (element, stop) => {
+ return procedure(entity, makeResumeElement({ sm }), (element, done) => {
if (element.is("resumed", NS)) {
- return stop(element);
+ return done(element);
} else if (element.is("failed", NS)) {
throw XMPPError.fromElement(element);
}
diff --git a/packages/stream-management/stream-features.test.js b/packages/stream-management/stream-features.test.js
index 8616f2ce..a8edc437 100644
--- a/packages/stream-management/stream-features.test.js
+++ b/packages/stream-management/stream-features.test.js
@@ -114,7 +114,11 @@ test("enable - failed", async () => {
expect(entity.streamManagement.outbound).toBe(0);
entity.streamManagement.enabled = true;
- entity.mockInput();
+ entity.mockInput(
+
+
+ ,
+ );
await tick();
@@ -169,7 +173,11 @@ test("resume - failed", async () => {
,
);
- entity.mockInput();
+ entity.mockInput(
+
+
+ ,
+ );
await tick();