diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.c b/LUFA/Drivers/USB/Class/Device/MassStorage.c
index 18f7b8e5286474aaf035e0ced8bc4001b1ed3b09..4d7cff6bf76045c2de90e5af813ea64c40a9a797 100644
--- a/LUFA/Drivers/USB/Class/Device/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Device/MassStorage.c
@@ -166,10 +166,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
 	                               (sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) ==
 	                               ENDPOINT_RWSTREAM_IncompleteTransfer)
 	{
-		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-		USB_USBTask();
-		#endif
-
 		if (MSInterfaceInfo->State.IsMassStoreReset)
 		  return false;
 	}
@@ -192,10 +188,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
 	                                MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) ==
 	                                ENDPOINT_RWSTREAM_IncompleteTransfer)
 	{
-		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-		USB_USBTask();
-		#endif
-
 		if (MSInterfaceInfo->State.IsMassStoreReset)
 		  return false;
 	}
@@ -236,10 +228,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
 	                                sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) ==
 	                                ENDPOINT_RWSTREAM_IncompleteTransfer)
 	{
-		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-		USB_USBTask();
-		#endif
-
 		if (MSInterfaceInfo->State.IsMassStoreReset)
 		  return;
 	}
diff --git a/LUFA/Drivers/USB/HighLevel/PipeStream.c b/LUFA/Drivers/USB/HighLevel/PipeStream.c
index 9f889817773da071ada4da9091999aa7b6503f84..4465471a81719567e711c2f754ea652e2e315199 100644
--- a/LUFA/Drivers/USB/HighLevel/PipeStream.c
+++ b/LUFA/Drivers/USB/HighLevel/PipeStream.c
@@ -101,6 +101,8 @@ uint8_t Pipe_Null_Stream(uint16_t Length,
 				*BytesProcessed += BytesInTransfer;
 				return PIPE_RWSTREAM_IncompleteTransfer;
 			}
+			
+			USB_USBTask();
 
 			if ((ErrorCode = Pipe_WaitUntilReady()))
 			  return ErrorCode;
diff --git a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_RW.c b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_RW.c
index 8a68d65e266726a24b20009190daf11841c609b1..4077279cd1e3ee96846ce750a9e8855e89f1e253 100644
--- a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_RW.c
+++ b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_RW.c
@@ -27,6 +27,10 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer,
 				return ENDPOINT_RWSTREAM_IncompleteTransfer;
 			}
 
+			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+			USB_USBTask();
+			#endif
+
 			if ((ErrorCode = Endpoint_WaitUntilReady()))
 			  return ErrorCode;
 		}
diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index df1e86aa7a39c50ca94f500228955a50a7f593c8..33f5ec924763feeea5c3a763034918035b76c3fa 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c
@@ -155,10 +155,6 @@ uint8_t Endpoint_WaitUntilReady(void)
 			if (Endpoint_IsOUTReceived())
 			  return ENDPOINT_READYWAIT_NoError;
 		}
-
-		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-		USB_USBTask();
-		#endif
 		
 		uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c
index e8ee23ffdc6cc5e37be90191be319fc97162bef9..82a9c1a49b5085d4f7103dd1abff0b4132da9580 100644
--- a/LUFA/Drivers/USB/LowLevel/Pipe.c
+++ b/LUFA/Drivers/USB/LowLevel/Pipe.c
@@ -172,10 +172,6 @@ uint8_t Pipe_WaitUntilReady(void)
 			  return PIPE_READYWAIT_NoError;
 		}
 
-		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-		USB_USBTask();
-		#endif
-
 		if (Pipe_IsStalled())
 		  return PIPE_READYWAIT_PipeStalled;
 		else if (USB_HostState == HOST_STATE_Unattached)