code: function _flatten(array) {
          var i = 0,
              result = [],
              queue = [ array ],
              current, ii, ll, item;
          
          while (i < queue.length) {
              current = queue[i]; // current is always an array
              for (ii = 0, ll = current.length; ii < ll; ii++) {
                  item = current[ii];
                  if (isArray(item)) {
                      queue.push(item);
                  } else {
                      result.push(item);
                  }
              }
              i++;
          }
          return result;
      }
docs: this doesn't detect cycles (like array containting itself)