JSFiddle - React, Tailwind, and code Playground

JavaScript

var prop, $prop;

function promisifyModel($q, model) {
  for (prop in model) {
    promisify($q, model, prop);
  }
  for (prop in model.prototype) {
    promisify($q, model.prototype, prop);
  }
  return model;
}

function promisify($q, model, prop) {
  $prop = '$' + prop;
  if (typeof model[prop] == 'function') {
    model[$prop] = function () {
      var theArgs = [].splice.call(arguments,0);
      return $q(function (resolve, reject) {
        theArgs.push(function (err, data) {
          if (err) {
            return reject(err);
          } else {
            return resolve(data);
          }
        });
        model[prop].apply(model, theArgs);
      });
    };
  }
}

angular.module('loopbackExampleFullStackApp')
  .value('sync', client.sync)
  .value('network', client.network)
  .factory('Todo', function($q) { return promisifyModel($q, client.models.LocalTodo); })
  .factory('RemoteTodo', function($q) { return promisifyModel($q, client.models.Todo); });