anchor.diff:          member __.WriteETag(path : string, writer : Stream -> Async<'R>) : Async<ETag * 'R> = async {
               let path = normalize path
               initDir <| Path.GetDirectoryName path
  -            use fs = retry ioConcurrencyPolicy (fun () -> new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
  +            use fs = retry fileAccessRetryPolicy (fun () -> new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
               let! r = writer fs
               // flush to disk before closing stream to ensure etag is correct
               if fs.CanWrite then fs.Flush(flushToDisk = true)
  
positive.code: 
          member __.ReadETag(path : string, etag : ETag) = async {
              let path = normalize path
              let fs = retry ioConcurrencyPolicy (fun () -> new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
              if etag = getETag path then
                  return Some(fs :> Stream)
              else
  
negative.code:         member __.BeginWrite(path : string) = async {
              let path = normalize path
              initDir <| Path.GetDirectoryName path
              return retry fileAccessRetryPolicy (fun () -> new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None) :> Stream)
          }
  
          member __.BeginRead(path : string) = async {
              try return! retryAsync fileAccessRetryPolicy <| async { return new FileStream(normalize path, FileMode.Open, FileAccess.Read, FileShare.Read) :> Stream }
              with :? DirectoryNotFoundException -> return raise <| new FileNotFoundException(path)
          }
  
          member self.CopyOfStream(source : Stream, target : string) = async {
              let target = normalize target
              initDir <| Path.GetDirectoryName target
              use! fs = retryAsync fileAccessRetryPolicy <| async { return new FileStream(target, FileMode.Create, FileAccess.Write, FileShare.None) }
              do! source.CopyToAsync fs
          }
  
  