From 59412aba513e6b28263e81d39be9a0d9df545e7d Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Wed, 29 Apr 2020 15:45:51 +0200 Subject: [PATCH] handle race between sending and await next event from other party --- src/crypto/verification/Base.js | 5 +++++ src/crypto/verification/request/VerificationRequest.js | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/crypto/verification/Base.js b/src/crypto/verification/Base.js index c3a8e0ec6..d9580aa49 100644 --- a/src/crypto/verification/Base.js +++ b/src/crypto/verification/Base.js @@ -122,6 +122,11 @@ export class VerificationBase extends EventEmitter { if (this._done) { return Promise.reject(new Error("Verification is already done")); } + const existingEvent = this.request.getEventFromOtherParty(type); + if (existingEvent) { + return Promise.resolve(existingEvent); + } + this._expectedEvent = type; return new Promise((resolve, reject) => { this._resolveEvent = resolve; diff --git a/src/crypto/verification/request/VerificationRequest.js b/src/crypto/verification/request/VerificationRequest.js index 47fa44657..a0d0998d9 100644 --- a/src/crypto/verification/request/VerificationRequest.js +++ b/src/crypto/verification/request/VerificationRequest.js @@ -877,4 +877,8 @@ export class VerificationRequest extends EventEmitter { this._setPhase(newTransitions[newTransitions.length - 1].phase); } } + + getEventFromOtherParty(type) { + return this._eventsByThem.get(type); + } }