Bug 1104055 - Use promises instead of callbacks