code: function(args, connectionInfo, retryCounter) {
    if ( !(args && args.handle && args.handle.value) ) {
      return Promise.reject('missing required arguments for fetchProductByHandle()');
    }
  
    if (!retryCounter) {
      retryCounter = 0;
    } else {
      log.debug('retry # ' + retryCounter);
    }
  
    var path = '/api/products';
    // this is an undocumented implementation by Vend
    // the response has to be accessed like: result.products[0]
    // which is lame ... TODO: should we unwrap it within the SDK?
  
    var vendUrl = 'https://' + connectionInfo.domainPrefix + '.vendhq.com' + path;
    log.debug('Requesting vend product ' + vendUrl);
    var authString = 'Bearer ' + connectionInfo.accessToken;
    log.debug('GET ' + vendUrl);
    log.silly('Authorization: ' + authString); // TODO: sensitive data ... do not log?
  
    var options = {
      url: vendUrl,
      headers: {
        'Authorization': authString,
        'Accept': 'application/json'
      },
      qs: {
        handle: args.handle.value
      }
    };
  
    return utils.sendRequest(options, args, connectionInfo, fetchProductByHandle, retryCounter);
  }
docs: TODO: instead of returning response, return the value of response.products[0] directly?