# File lib/nats/client.rb, line 679
  def start_resp_mux_sub!
    @resp_sub_prefix = "_INBOX.#{@nuid.next}"
    @resp_map = Hash.new { |h,k| h[k] = { }}

    # Single subscription that will be handling all the requests
    # using fibers to yield the responses.
    subscribe("#{@resp_sub_prefix}.*") do |msg, reply, subject|
      token = subject.split('.').last

      # Discard the response if requestor not interested already.
      next unless @resp_map.key? token

      # Take fiber that will be passed the response
      f = @resp_map[token][:fiber]
      expected = @resp_map[token][:expected]

      if expected == 1
        f.resume msg
        @resp_map.delete(token)
        next
      end

      if @resp_map[token][:msgs].size < expected
        @resp_map[token][:msgs] << msg

        msgs = @resp_map[token][:msgs]
        if msgs.size >= expected
          f.resume(msgs)
        else
          # Wait to gather more messages or timeout.
          next
        end
      end

      @resp_map.delete(token)
    end
  end