I thinks the lock before socket.conn.write cause the problem: https://github.com/globalsign/mgo/blob/master/socket.go#L522 The unlock of this mutx is after the write opreation: https://github.com/globalsign/mgo/blob/master/socket.go#L561 Which caused the socket cannot read while writing.