anchor.diff:                                      // will tell us if there was a notification but we missed it.
                                       // 2. by caching ids that we waited, we could reclaim a result
                                       // after a worker death without re-posting a task (TryGetResultImmediate method)
  -                                    resultsIdCache.Add(resultId, Object(), 
  +                                    cache.Add(resultsKey + ":id:" + resultId, Object(), 
                                           DateTimeOffset.Now.AddMilliseconds(float this.ResultTimeout)) 
                                           |> ignore
                                   )
  
positive.code:                 async {
                      let retryInterval = if this.ResultTimeout > 0 then this.ResultTimeout / 3 else 5000 // arbitrary large number
                      let! listenerTask = Async.AwaitWaitHandle(listener.WaitHandle, retryInterval) |> Async.StartChild
                      let hasCachedId = resultsIdCache.Get(resultId) <> null
                      let signaled = ref false
                      if not hasCachedId then
                          let! signal = listenerTask
  
negative.code:                     if !signaled then // if signaled then result definitely exists
                          return true
                      else // opportunistic retry "what if we lost a message for some reason"
                          let cachedResult = cache.Get(resultsKey + ":" + resultId)
                          let result =
                              if cachedResult <> null then true
                              else
  