diff --git a/packages/doorman-client/src/functions/buzzer-activated.ts b/packages/doorman-client/src/functions/buzzer-activated.ts index c0ca039..db64d0c 100644 --- a/packages/doorman-client/src/functions/buzzer-activated.ts +++ b/packages/doorman-client/src/functions/buzzer-activated.ts @@ -87,25 +87,26 @@ export const handler: ServerlessFunctionSignature((resolve, reject) => { intervals.push(setInterval(() => { + // prevent multiple polling at once + if (pollLock) { + return; + } + getMetricFromRegistry(metricsRegistry, BuzzerActivatedMetrics.POLL_ATTEMPTS) .inc({ door: config.door }, 1); const recordPollLatency = getMetricFromRegistry(metricsRegistry, BuzzerActivatedMetrics.POLL_LATENCY) .startTimer({ door: config.door }); - // prevent multiple polling at once - if (pollLock) { - return; - } - pollLock = true; fetch(context.DOORMAN_URL + `/api/door/status?door=${config.door}`) .then(res => res.json()) .then(async (rawBody) => { let body = rawBody as StatusResponse; recordPollLatency(); + pollLock = false; + if (body?.status === DoorStatus.OPEN) { - pollLock = false; clearInterval(intervals[0]); const twiml = doorOpenTwiml(config);