code: function automagic(parentNode, childNode, options, callback) {
      Embedo.log('info', 'automagic', parentNode, childNode, options);
      options = options || {};
      callback = callback || function () {};
  
      if (!Embedo.utils.validateElement(parentNode) || !Embedo.utils.validateElement(childNode)) {
        return callback(new Error('HTMLElement does not exist in DOM.'));
      }
  
      Embedo.utils.watcher(
        options.id || Embedo.utils.uuid(),
        function () {
          var parent = {
            width: options.width || Embedo.utils.compute(parentNode, 'width'),
            height: options.height || Embedo.utils.compute(parentNode, 'height')
          };
          var child = {
            width: Embedo.utils.compute(childNode, 'width'),
            height: Embedo.utils.compute(childNode, 'height')
          };
  
          if (options.strict) {
            return callback(null, {
              width: parent.width,
              height: parent.height
            });
          }
  
          // Odd case when requested height is beyond limit of third party
          // Only apply when fixed width and heights are provided
          if (options.width && options.height) {
            var isOverflowing = child.width > parent.width || child.height > parent.height;
  
            if (options.width) {
              childNode.style.width = options.width + 'px';
            }
  
            if (options.height) {
              childNode.style.height = options.height + 'px';
            }
  
            if (isOverflowing) {
              var scale = Math.min(parent.width / child.width, parent.height / child.height);
              Embedo.utils.transform(childNode, 'scale(' + scale + ')');
            }
          }
  
          callback(null, {
            width: parent.width,
            height: parent.height
          });
        },
        500
      );
    }
docs: @function automagic
  Automagic - Scales and resizes embed container
  
  @param {HTMLElement} parentNode
  @param {HTMLElement} childNode
  @param {object} options