# File lib/moped/operation/read.rb, line 47
      def execute(node)
        node.process(operation) do |reply|
          # Avoid LocalJumpError
          ret = nil
          if reply.unauthorized? && node.credentials.key?(@database)
            node.connection do |conn|
              username, password = node.credentials[@database]
              if username && password
                conn.login(operation.database, username, password)
                ret = execute(node)
              end
            end
          end

          if ret.nil?
            if operation.failure?(reply)
              raise operation.failure_exception(reply)
            end

            ret = operation.results(reply)
          end

          ret
        end
      end