 		#
 		query: ( request, args..., callback ) ->
 			queryID = _.uniqueId('query')
-			@once(queryID, callback)
+
+			timer = setTimeout( ( ) =>
+				@off(queryID)
+				callback(null)
+			, @_queryTimeout)
+
+			fn = ( argms... ) =>
+				callback.apply(@, argms)
+				clearTimeout(timer)
+
+			@once(queryID, fn)
 
 			args = ['query', request, queryID].concat(args)
 			@emit.apply(@, args)

	class Remote extends Mixable

		@concern EventBindings

		# Constructs a remote.
		#


			@_send(message)

		# Queries the remote. Calls the callback function when a response is received, or
		# when the query has timed out, in which case the first argument passed to the
		# callback is null.
		#
		# @param request [String] the request string identifier
		# @param callback [Function] the function to call when a response was received
