- return Utils.promiseWithTimeout(
- new Promise((resolve, reject) => {
- /**
- * Function that will receive the request's response
- *
- * @param payload -
- * @param requestPayload -
- */
- const responseCallback = (payload: JsonType, requestPayload: JsonType): void => {
- if (chargingStation.getEnableStatistics() === true) {
- chargingStation.performanceStatistics?.addRequestStatistic(
- commandName,
- MessageType.CALL_RESULT_MESSAGE
- );
- }
- // Handle the request's response
- self.ocppResponseService
- .responseHandler(
- chargingStation,
- commandName as RequestCommand,
- payload,
- requestPayload
- )
- .then(() => {
- resolve(payload);
- })
- .catch((error) => {
- reject(error);
- })
- .finally(() => {
- chargingStation.requests.delete(messageId);
- });
- };
-
- /**
- * Function that will receive the request's error response
- *
- * @param error -
- * @param requestStatistic -
- */
- const errorCallback = (error: OCPPError, requestStatistic = true): void => {
- if (requestStatistic === true && chargingStation.getEnableStatistics() === true) {
- chargingStation.performanceStatistics?.addRequestStatistic(
- commandName,
- MessageType.CALL_ERROR_MESSAGE
- );
- }
- logger.error(
- `${chargingStation.logPrefix()} Error occurred at ${OCPPServiceUtils.getMessageTypeString(
- messageType
- )} command ${commandName} with PDU %j:`,
- messagePayload,
- error
- );
- chargingStation.requests.delete(messageId);
- reject(error);
- };
+ return await new Promise<ResponseType>((resolve, reject) => {
+ /**
+ * Function that will receive the request's response
+ *
+ * @param payload -
+ * @param requestPayload -
+ */
+ const responseCallback = (payload: JsonType, requestPayload: JsonType): void => {
+ if (chargingStation.stationInfo?.enableStatistics === true) {
+ chargingStation.performanceStatistics?.addRequestStatistic(
+ commandName,
+ MessageType.CALL_RESULT_MESSAGE
+ )
+ }
+ // Handle the request's response
+ self.ocppResponseService
+ .responseHandler(
+ chargingStation,
+ commandName as RequestCommand,
+ payload,
+ requestPayload
+ )
+ .then(() => {
+ resolve(payload)
+ })
+ .catch(reject)
+ .finally(() => {
+ chargingStation.requests.delete(messageId)
+ chargingStation.emit(ChargingStationEvents.updated)
+ })
+ }