diff --git a/tasklib/backends.py b/tasklib/backends.py
index <HASH>..<HASH> 100644
--- a/tasklib/backends.py
+++ b/tasklib/backends.py
@@ -201,3 +201,6 @@ class TaskWarrior(object):
         # altering the data before saving
         task.refresh(after_save=True)
 
+    def delete_task(self, task):
+        self.execute_command([task['uuid'], 'delete'])
+
diff --git a/tasklib/task.py b/tasklib/task.py
index <HASH>..<HASH> 100644
--- a/tasklib/task.py
+++ b/tasklib/task.py
@@ -586,7 +586,7 @@ class Task(TaskResource):
         if self.deleted:
             raise Task.DeletedTask("Task was already deleted")
 
-        self.warrior.execute_command([self['uuid'], 'delete'])
+        self.backend.delete_task(self)
 
         # Refresh the status again, so that we have updated info stored
         self.refresh(only_fields=['status', 'start', 'end'])
Task: Move TW-specific deletion logic into TW backend