code: function animate(Promise, TweenModule) {
    var animateTo = _animateFunc.bind(null, TweenModule.to);
  
    var util = animateTo;
    util.to = animateTo;
    util.from = _animateFunc.bind(null, TweenModule.from);
  
    util.set = function animateSet(element, params) {
      params = Object.assign({}, params);
      return new Promise(function(resolve, reject) {
        params.onComplete = resolve;
        TweenModule.set(element, params);
      });
    };
  
    util.fromTo = function animateFromTo(element, duration, from, to) {
      to = Object.assign({}, to);
      var tween;
      return new Promise(function(resolve, reject, onCancel) {
        to.onComplete = resolve;
        tween = TweenModule.fromTo(element, duration, from, to);
        onCancel &&
          onCancel(function() {
            tween.kill();
          });
      });
    };
  
    util.killTweensOf = TweenModule.killTweensOf.bind(TweenModule);
    util.all = Promise.all;
    return util;
  }
docs: Get a wrapper of GSAP Tween
  
  @param {Promise} Promise - Promise framework
  @param {TweenModule} TweenModule - TweenMax or TweenLite
  @returns {Object} GSAP Promisified