             frame or rv
 
           close: (frame) ->
-            @remove(frame)
-            frame.terminate()
+            pr = frame.terminate()
+            pr.then(
+              =>
+                @remove frame
+              ,
+              (r) =>
+                return @remove frame unless frame.closeAttempts < 1
+                frame.setError r
+                frame.closeAttempts++
+            )
 
           createOne: (data = {}) ->
             last = @last()

            intrPromise = intrFn(query, $q.defer())
            @terminate = =>
              @resetError()
              @isTerminating = yes
              intrPromise?.transaction?.rollback()?.then( =>
                @isTerminating = no
              )

            $q.when(intrPromise).then(
              (result) =>

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