in provider/lib/utils.js [246:309]
function postTrigger(triggerData, form, uri, retryCount) {
var method = 'postTrigger';
return new Promise(function(resolve, reject) {
// only manage trigger fires if they are not infinite
if (triggerData.maxTriggers !== -1) {
triggerData.triggersLeft--;
}
self.authRequest(triggerData, {
method: 'post',
uri: uri,
json: form
}, function(error, response) {
try {
var statusCode;
if (!error) {
statusCode = response.statusCode;
}
else if (error.statusCode) {
statusCode = error.statusCode;
}
logger.info(method, triggerData.id, 'http post request, STATUS:', statusCode);
if (error || statusCode >= 400) {
// only manage trigger fires if they are not infinite
if (triggerData.maxTriggers !== -1) {
triggerData.triggersLeft++;
}
logger.error(method, 'there was an error invoking', triggerData.id, statusCode || error);
if (!error && shouldDisableTrigger(statusCode)) {
//disable trigger
var message = 'Automatically disabled after receiving a ' + statusCode + ' status code when firing the trigger';
disableTrigger(triggerData.id, statusCode, message);
reject('Disabled trigger ' + triggerData.id + ' due to status code: ' + statusCode);
}
else {
if (retryCount < retryAttempts ) {
var timeout = statusCode === 429 && retryCount === 0 ? 60000 : 1000 * Math.pow(retryCount + 1, 2);
logger.info(method, 'attempting to fire trigger again', triggerData.id, 'Retry Count:', (retryCount + 1));
setTimeout(function () {
postTrigger(triggerData, form, uri, (retryCount + 1))
.then(triggerId => {
resolve(triggerId);
})
.catch(err => {
reject(err);
});
}, timeout);
} else {
reject('Unable to reach server to fire trigger ' + triggerData.id);
}
}
} else {
logger.info(method, 'fired', triggerData.id, triggerData.triggersLeft, 'triggers left');
resolve(triggerData.id);
}
}
catch(err) {
reject('Exception occurred while firing trigger ' + err);
}
});
});
}