diff --git a/index.js b/index.js
index <HASH>..<HASH> 100644
--- a/index.js
+++ b/index.js
@@ -98,27 +98,34 @@ function SerialPort(path, options, openImmediately, callback) {
     return;
   }
 
+  options.rtscts = _options.rtscts;
+
   if (options.flowControl || options.flowcontrol) {
     var fc = options.flowControl || options.flowcontrol;
 
     if (typeof fc === 'boolean') {
       options.rtscts = true;
     } else {
-      fc.forEach(function (flowControl) {
+      var clean = fc.every(function (flowControl) {
         var fcup = flowControl.toUpperCase();
         var idx = FLOWCONTROLS.indexOf(fcup);
         if (idx < 0) {
-          var err = new Error('Invalid "flowControl": ' + fcup + ". Valid options: " + FLOWCONTROLS.join(", "));
+          var err = new Error('Invalid "flowControl": ' + fcup + '. Valid options: ' + FLOWCONTROLS.join(', '));
           callback(err);
-          return;
+          return false;
         } else {
 
           // "XON", "XOFF", "XANY", "DTRDTS", "RTSCTS"
           switch (idx) {
             case 0: options.rtscts = true; break;
           }
+          return true;
         }
       });
+      console.log(clean);
+      if(!clean){
+        return;
+      }
     }
   }
flow control thought it was returning and halting execution from inside a foreach, it was not