code: function buy (jar, token, product, price) {
    var robux = product.PriceInRobux || 0;
    var productId = product.ProductId;
    if (price) {
      if (typeof price === 'number') {
        if (robux !== price) {
          throw new Error('Price requirement not met. Requested price: ' + price + ' Actual price: ' + robux);
        }
      } else if (typeof price === 'object') {
        var high = price.high;
        var low = price.low;
        if (high) {
          if (robux > high) {
            throw new Error('Price requirement not met. Requested price: <=' + high + ' Actual price: ' + robux);
          }
        }
        if (low) {
          if (robux < low) {
            throw new Error('Price requirement not met. Requested price: >=' + low + ' Actual price: ' + robux);
          }
        }
      }
    }
    var httpOpt = {
      url: '//www.roblox.com/API/Item.ashx?rqtype=purchase&productID=' + productId + '&expectedCurrency=1&expectedPrice=' + robux + '&expectedSellerID=' + product.Creator.Id + '&userAssetID=' + product.UserAssetId,
      options: {
        method: 'POST',
        jar: jar,
        headers: {
          'X-CSRF-TOKEN': token
        }
      }
    };
    return http(httpOpt)
    .then(function (body) {
      var json = JSON.parse(body);
      var err = json.errorMsg;
      if (json.showDivID === 'InsufficientFundsView') {
        err = 'You need ' + Math.abs(json.balanceAfterSale) + ' more robux to purchase this item.';
      }
      if (!err) {
        return {productId: productId, price: robux};
      } else {
        throw new Error(err);
      }
    });
  }
docs: Define