diff --git a/apps/ts_engine/kii-connector/conn_comm.c b/apps/ts_engine/kii-connector/conn_comm.c
index 4f2d565e382e27fdb1d87253f894c12d88817fed..7dd228c8709946019a03d818cba1c1150d6bc869 100644
--- a/apps/ts_engine/kii-connector/conn_comm.c
+++ b/apps/ts_engine/kii-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }
diff --git a/apps/ts_engine/meshblu-connector/conn_comm.c b/apps/ts_engine/meshblu-connector/conn_comm.c
index 945dda8c924fcdbfc1ef0364f4bfddd451091742..45f993c2b7c178fd2c09670930134e2f406f2dab 100644
--- a/apps/ts_engine/meshblu-connector/conn_comm.c
+++ b/apps/ts_engine/meshblu-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }
diff --git a/apps/ts_engine/ts-connector/conn_comm.c b/apps/ts_engine/ts-connector/conn_comm.c
index 9b215b799f61e4584508519f7c6ac30def7ef4af..d36605963be670c70ec1eb052646c6d5ed86502d 100644
--- a/apps/ts_engine/ts-connector/conn_comm.c
+++ b/apps/ts_engine/ts-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }