             intrPromise = intrFn(query, $q.defer())
             @terminate = =>
               @resetError()
+              q = $q.defer()
+              if not intrPromise or not intrPromise.transaction
+                q.resolve({})
+                return q.promise
               @isTerminating = yes
-              intrPromise?.transaction?.rollback()?.then( =>
-                @isTerminating = no
+              intrPromise.transaction.rollback().then(
+                (r) =>
+                  @isTerminating = no
+                  q.resolve r
+                ,
+                (r) =>
+                  @isTerminating = no
+                  q.reject r
               )
+              return q.promise
 
             $q.when(intrPromise).then(
               (result) =>

            frame or rv

          close: (frame) ->
            @remove(frame)
            frame.terminate()

          createOne: (data = {}) ->
            last = @last()

            @hasErrors = no
            @isLoading = yes
            @isTerminating = no
            @closeAttempts = 0
            @response  = null
            @templateUrl = intr.templateUrl
            timer = Timer.start()
