function scale(image, dW, dH) {
        var sW = ImageSize.getWidth(image);
        var sH = ImageSize.getHeight(image);
        var wRatio = dW / sW;
        var hRatio = dH / sH;
        var scaleCapped = false;

        if (wRatio < 0.5 || wRatio > 2) {
            wRatio = wRatio < 0.5 ? 0.5 : 2;
            scaleCapped = true;
        }
        if (hRatio < 0.5 || hRatio > 2) {
            hRatio = hRatio < 0.5 ? 0.5 : 2;
            scaleCapped = true;
        }

        var scaled = _scale(image, wRatio, hRatio);

        return !scaleCapped ? scaled : scaled.then(function (tCanvas) {
            return scale(tCanvas, dW, dH);
        });
    }
@method scale
@static
@param image {Image|Canvas}
@param dW {Number} Width that the image should be scaled to
@param dH {Number} Height that the image should be scaled to
@returns {Promise}