docs: function normalizedRequestParameters(uri, body, protocolParams) {
      // to multidimension array
      return paramSources(uri, body, protocolParams)
  
      // 1.  First, the name and value of each parameter are encoded
      .map(function (p) {
          return [ encode(p[0]), encode(p[1]) ];
      })
  
      // 2.  The parameters are sorted by name, using ascending byte value
      //     ordering.  If two or more parameters share the same name, they
      //     are sorted by their value.
      .sort(function (a, b) {
          return compare(a[0], b[0]) || compare(a[1], b[1]);
      })
  
      // 3.  The name of each parameter is concatenated to its corresponding
      //     value using an "=" character (ASCII code 61) as a separator, even
      //     if the value is empty.
      .map(function (p) { return p.join('='); })
  
      // 4.  The sorted name/value pairs are concatenated together into a
      //     single string by using an "&" character (ASCII code 38) as
      //     separator.
      .join('&');
  }