diff --git a/packages/node_modules/@node-red/nodes/core/function/89-delay.js b/packages/node_modules/@node-red/nodes/core/function/89-delay.js index ebb16bd5f..374ffadb0 100644 --- a/packages/node_modules/@node-red/nodes/core/function/89-delay.js +++ b/packages/node_modules/@node-red/nodes/core/function/89-delay.js @@ -153,15 +153,26 @@ module.exports = function(RED) { } else if (node.pauseType === "rate") { node.on("input", function(msg) { + if (msg.hasOwnProperty("reset")) { + if (node.intervalID !== -1 ) { + clearInterval(node.intervalID); + node.intervalID = -1; + } + node.buffer = []; + node.status({text:"reset"}); + return; + } if (!node.drop) { + var m = RED.util.cloneMessage(msg); + delete m.flush; if (node.intervalID !== -1) { - if (!msg.hasOwnProperty("flush")) { - node.buffer.push(msg); + //if (!msg.hasOwnProperty("flush")) { + node.buffer.push(m); node.reportDepth(); - } + //} } else { - node.send(msg); + node.send(m); node.reportDepth(); node.intervalID = setInterval(function() { if (node.buffer.length === 0) { @@ -174,6 +185,12 @@ module.exports = function(RED) { node.reportDepth(); }, node.rate); } + if (msg.hasOwnProperty("flush")) { + while (node.buffer.length > 0) { + node.send(node.buffer.shift()); + } + node.status({}); + } } else { var timeSinceLast; @@ -189,18 +206,6 @@ module.exports = function(RED) { node.send(msg); } } - if (msg.hasOwnProperty("reset")) { - clearInterval(node.intervalID); - node.intervalID = -1; - node.buffer = []; - node.status({text:"reset"}); - } - if (msg.hasOwnProperty("flush")) { - while (node.buffer.length > 0) { - node.send(node.buffer.shift()); - } - node.status({}); - } }); node.on("close", function() { clearInterval(node.intervalID);