code: function _coerceObjectType(obj, objHint){
    if(objHint){
      switch(objHint){
        case 'string':
          //Response that comes back is application/octet-stream, which we will return raw
          return obj;
        case 'buffer':
          return Buffer.from(obj, 'utf8');
        case 'number':
          var num = Number(obj);
          if(isNaN(num)){
            throw new TypeError("'number was requested as a type, but result is NaN!");
          }
          return num;
        case 'array':
          try{
            var pObj = JSON.parse(obj);
            if(pObj[0] == undefined){
              //Is an object, not an array, so we will construct an array of just this object
              return new Array(pObj);
            }
            return pObj;
          }catch(ex){
            //If it fails, then it is likely a single string, lets coerce it to an array
            return new Array(obj);
          }
        case 'boolean':
          //Today's javascript fun-fact: 'false' is truthy!
          if(obj == 'false'){
            return false;
          }
          return Boolean(obj);
        case 'object':
           try{
            var pObj = JSON.parse(obj);
            return pObj;
          }catch(ex){
            //If it fails, then just throw back the object
            return obj;
          }
          break;
      }
    }else{
      return _bestGuessObject(obj);
    }
  }
docs: /*
  Internal method for coercing the response back into the expected format.
  Takes an 'object hint' which defines the expected response format,
  but if one is not provided, makes a best-guess, based upon what the response
  looks like.