public static byte[] Receive(this IReceivingSocket socket, TimeSpan timeout)
        {
            var s = socket as NetMQSocket;

            if (s == null)
            {
                throw new InvalidCastException(string.Format("Expected a NetMQSocket but got a {0}", socket.GetType()));
            }

            var result = s.Poll(PollEvents.PollIn, timeout);

            if (!result.HasFlag(PollEvents.PollIn))
            {
                return(null);
            }

            return(socket.Receive());
        }