diff --git a/src/main/java/reactor/netty/channel/FluxReceive.java b/src/main/java/reactor/netty/channel/FluxReceive.java
index <HASH>..<HASH> 100644
--- a/src/main/java/reactor/netty/channel/FluxReceive.java
+++ b/src/main/java/reactor/netty/channel/FluxReceive.java
@@ -86,7 +86,12 @@ final class FluxReceive extends Flux<Object> implements Subscription, Disposable
 	@Override
 	public void cancel() {
 		cancelReceiver();
-		drainReceiver();
+		if (eventLoop.inEventLoop()) {
+			drainReceiver();
+		}
+		else {
+			eventLoop.execute(this::drainReceiver);
+		}
 	}
 
 	final long getPending() {
Ensure drainReceiver is invoked in the correct thread