JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.4/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.4/angular-resource.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<div ng-app="MyApp">
    <div ng-controller="WithObjectCtrl">
        <h1>Using .$object</h1>
        <h2>Hello, {{model.name}}!</h2>
        <button ng-click="update()">Update</button>
    </div>
    <hr>
    <div ng-controller="WithPromiseCtrl">
        <h1>Using Promise</h1>
        <h2>Hello, {{model.name}}!</h2>
        <button ng-click="update()">Update</button>
    </div>
</div>

JavaScript

(function() {

var restangular = angular.module('restangular', []);

restangular.provider('Restangular', function() {
  // Configuration
  var Configurer = {};
  Configurer.init = function(object, config) {
    object.configuration = config;

    /**
     * Those are HTTP safe methods for which there is no need to pass any data with the request.
     */
    var safeMethods= ['get', 'head', 'options', 'trace', 'getlist'];
    config.isSafe = function(operation) {
      return _.contains(safeMethods, operation.toLowerCase());
    };

    var absolutePattern = /^https?:\/\//i;
    config.isAbsoluteUrl = function(string) {
      return _.isUndefined(config.absoluteUrl) || _.isNull(config.absoluteUrl) ?
              string && absolutePattern.test(string) :
              config.absoluteUrl;
    };

    config.absoluteUrl = _.isUndefined(config.absoluteUrl) ? true : config.absoluteUrl;
    object.setSelfLinkAbsoluteUrl = function(value) {
      config.absoluteUrl = value;
    };
    /**
     * This is the BaseURL to be used with Restangular
     */
    config.baseUrl = _.isUndefined(config.baseUrl) ? '' : config.baseUrl;
    object.setBaseUrl = function(newBaseUrl) {
      config.baseUrl = /\/$/.test(newBaseUrl) ?
        newBaseUrl.substring(0, newBaseUrl.length-1) :
        newBaseUrl;
      return this;
    };

    /**
     * Sets the extra fields to keep from the parents
     */
    config.extraFields = config.extraFields || [];
    object.setExtraFields = function(newExtraFields) {
      config.extraFields = newExtraFields;
      return this;
    };

    /**
     * Some default $http parameter to be used in EVERY call
    **/
    config.defaultHttpFields = config.defaultHttpFields || {};
    object.setDefaultHttpFields = function(values) {
      config.defaultHttpFields = values;
      return this;
    };

    config.withHttpValues = function(httpLocalConfig, obj) {
      return _.defaults(obj, httpLocalConfig, config.defaultHttpFields);
    };

   ...