anchor.diff:          NameValueLookup.ofList [
               "data", upcast [
                   box <| NameValueLookup.ofList [
  -                    "value", upcast "Buffered 1"
  +                    "value", upcast "Buffered 3"
                   ]
                   upcast NameValueLookup.ofList [
                       "value", upcast "Buffered 2"
                   ]
               ]
  -            "path", upcast [box "testData"; upcast "bufferedList"; upcast [0; 1]]
  +            "path", upcast [box "testData"; upcast "bufferedList"; upcast [2; 1]]
           ]        
       let expectedDeferred2 =
           NameValueLookup.ofList [
               "data", upcast [
                   box <| NameValueLookup.ofList [
  -                    "value", upcast "Buffered 3"
  -                ]
  -            ]
  -            "path", upcast [box "testData"; upcast "bufferedList"; upcast [2]]
  +                    "value", upcast "Buffered 1"
  +                ]
  +            ]
  +            "path", upcast [box "testData"; upcast "bufferedList"; upcast [0]]
           ]   
       let query = parse """{
           testData {
  
positive.code:         NameValueLookup.ofList [
              "data", upcast [
                  box <| NameValueLookup.ofList [
                      "value", upcast "Delayed value 1"
                  ]
              ]
              "path", upcast [box "testData"; upcast "delayedList"; upcast 0]
          ]
      let expectedDeferred2 =
          NameValueLookup.ofList [
              "data", upcast [
                  box <| NameValueLookup.ofList [
                      "value", upcast "Delayed value 2"
                  ]
              ]
              "path", upcast [box "testData"; upcast "delayedList"; upcast 1]
          ]
      let query = parse """{
          testData {
  
negative.code:             if actualDeferred.Count < 2 then actualDeferred.Add(x)
              if actualDeferred.Count = 1 then mre1.Set() |> ignore
              if actualDeferred.Count = 2 then mre2.Set() |> ignore)
          // The first result is a delayed async field, which is set to compute the value for 5 seconds.
          // The second result is also a delayed async field, computed for 1 second.
          // Third result is a instant returning async field.
          // As the buffer has a time limit of 3 seconds, the expected behavior is
          // to buffer results 3 and 2 (in this order), as together they take less than 3 seconds to compute,
          // and send them together on the first batch.
          // First result should come in a second batch, as it takes 5 seconds to compute, more than the time limit of the buffer.
          if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not
          then fail "Timeout while waiting for first Deferred GQLResponse"
          if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not
  