Always check connection close channell, before attempting to put requests (#521)

diff --git a/pulsar/internal/connection.go b/pulsar/internal/connection.go
index 1c264c6..9cc1238 100644
--- a/pulsar/internal/connection.go
+++ b/pulsar/internal/connection.go
@@ -549,10 +549,15 @@
 	if c.getState() == connectionClosed {
 		callback(req, ErrConnectionClosed)
 	} else {
-		c.incomingRequestsCh <- &request{
+		select {
+		case <-c.closeCh:
+			callback(req, ErrConnectionClosed)
+
+		case c.incomingRequestsCh <- &request{
 			id:       &requestID,
 			cmd:      req,
 			callback: callback,
+		}:
 		}
 	}
 }
@@ -562,12 +567,17 @@
 		return ErrConnectionClosed
 	}
 
-	c.incomingRequestsCh <- &request{
+	select {
+	case <-c.closeCh:
+		return ErrConnectionClosed
+
+	case c.incomingRequestsCh <- &request{
 		id:       nil,
 		cmd:      req,
 		callback: nil,
+	}:
+		return nil
 	}
-	return nil
 }
 
 func (c *connection) internalSendRequest(req *request) {