【Angularjs】PromiseでforEachで同期処理で順次実行する

こちらのコードを実行すると、testが1秒間隔で3回順次実行される。

var test = function() {
  var deffered = $q.defer();
  $timeout(function() {
    deffered.resolve();
  }, 1000);
  return deffered.promise;
};

var deffered = $q.defer();
var promise = deffered.promise;

promise
  .then(function() {
    var deffered = $q.defer();
    var promise = deffered.promise;
    for	(var i = 0; i < 3; i++) {
    // [1, 2, 3].forEach(function(v) { // forEachも一緒
      promise = promise.then(function() {
        return test();
      })
        .then(function() {
          var deffered = $q.defer();
          deffered.resolve();
          return deffered.promise;
	});
    });
    deffered.resolve();
    return promise;
  });
  deffered.resolve();

やりたかったのはこれだけ。以上です。