anchor.diff:      /// </summary>
       member internal this.WaitResultAsync(resultId : string) : Async<bool> = 
           //Debug.Print("Getting: " + resultId)
  -        let cached = resultsCache.Get(resultId)
  +        let cached = cache.Get(resultsKey + ":" + resultId)
           if cached <> null then
               async { return true }
           else 
  
positive.code:                                 // notify local waiter
                                  if localResultListeners.ContainsKey(resultId) then
                                      // save trip to redis to get the result
                                      resultsCache.Add(resultId, outMessage, 
                                          DateTimeOffset.Now.AddMilliseconds(float this.ResultTimeout)) 
                                          |> ignore
                                      // save result and notify others about it even though we are doing job locally 
  
negative.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 = cache.Get(resultsKey + ":id:" + resultId) <> null
                      let signaled = ref false
                      if not hasCachedId then
                          let! signal = listenerTask
  