docs: function assign( /* target, ... sources */ ) {
      var args = Array.prototype.slice.call(arguments);
      var target = args.shift() || {};
  
      args.forEach(function (source) {
          Object.keys(source || {}).forEach(function (key) {
              if (['tls', 'auth'].indexOf(key) >= 0 && source[key] && typeof source[key] === 'object') {
                  // tls and auth are special keys that need to be enumerated separately
                  // other objects are passed as is
                  if (!target[key]) {
                      // esnure that target has this key
                      target[key] = {};
                  }
                  Object.keys(source[key]).forEach(function (subKey) {
                      target[key][subKey] = source[key][subKey];
                  });
              } else {
                  target[key] = source[key];
              }
          });
      });
      return target;
  }