diff --git a/lib/internal/cluster/primary.js b/lib/internal/cluster/primary.js index 991cfff6e6df61..e8113411790a11 100644 --- a/lib/internal/cluster/primary.js +++ b/lib/internal/cluster/primary.js @@ -252,19 +252,21 @@ cluster.disconnect = function(cb) { intercom.once('disconnect', cb); }; +const methodMessageMapping = { + close, + exitedAfterDisconnect, + listening, + online, + queryServer, +}; + function onmessage(message, handle) { const worker = this; - if (message.act === 'online') - online(worker); - else if (message.act === 'queryServer') - queryServer(worker, message); - else if (message.act === 'listening') - listening(worker, message); - else if (message.act === 'exitedAfterDisconnect') - exitedAfterDisconnect(worker, message); - else if (message.act === 'close') - close(worker, message); + const fn = methodMessageMapping[message.act]; + + if (typeof fn === 'function') + fn(worker, message); } function online(worker) {