diff --git a/task.hosting.inc b/task.hosting.inc
index fbcb23b..b4f899f 100644
--- a/task.hosting.inc
+++ b/task.hosting.inc
@@ -164,6 +164,10 @@ function drush_hosting_task_rollback() {
 function drush_hosting_post_hosting_task($task) {
   $task = &drush_get_context('HOSTING_TASK');
 
+  // Invoke hook_post_hosting_task()
+  module_invoke_all('post_hosting_task', $task, drush_get_context('HOSTING_DRUSH_OUTPUT'));
+
+  // Invoke hook_post_hosting_TYPE_task()
   $hook = sprintf("post_hosting_%s_task", str_replace('-', '_', $task->task_type));
   drush_log(dt('Invoking :hook hooks.', array(':hook' => $hook)));
   module_invoke_all($hook, $task, drush_get_context('HOSTING_DRUSH_OUTPUT'));
diff --git a/task/hosting_task.drush.inc b/task/hosting_task.drush.inc
index 64d98e6..ee220e9 100644
--- a/task/hosting_task.drush.inc
+++ b/task/hosting_task.drush.inc
@@ -5,11 +5,11 @@
  */
 
 /**
- * Implements hook_drush_init().
+ * Implements hook_post_hosting_task()
  */
-function hosting_task_drush_init() {
-  // Update a task's status after Drush operations are complete.
-  if (function_exists('_hosting_task_update_status')) {
-    register_shutdown_function('_hosting_task_update_status');
+function hosting_task_post_hosting_task(&$task, $data) {
+  if (!empty($task)) {
+    $message = _hosting_parse_error_code(hosting_task_update_status());
+    drush_log(dt('Updated task status to "!log"', array('!log' => $message)), 'info');
   }
-}
+}
\ No newline at end of file
diff --git a/task/hosting_task.module b/task/hosting_task.module
index 8232ec7..dd12ee1 100644
--- a/task/hosting_task.module
+++ b/task/hosting_task.module
@@ -1660,16 +1660,6 @@ function hosting_task_update_status($task = NULL) {
   return $update;
 }
 
-/**
- * Post task's status update
- */
-function _hosting_task_update_status() {
-  $task = drush_get_context('HOSTING_TASK');
-  if (!empty($task)) {
-    $message = _hosting_parse_error_code(hosting_task_update_status());
-    drush_log(dt('Updated task status to "!log"', array('!log' => $message)), 'info');
-  }
-}
 
 /**
  * Parse a task's log, and return its status accordingly.
