anchor.diff:              // Preconditions
               checkNonNull "array" array
   
  -            raise <| System.NotImplementedException "ExtCore.Control.Collections.Async.Array.foldi"
  +            let folder = FSharpFunc<_,_,_,_>.Adapt folder
  +
  +            (async.Return state, array)
  +            ||> Array.foldi (fun index stateAsync el ->
  +                async {
  +                // Get the state.
  +                let! state = stateAsync
  +
  +                // Invoke the folder and return the result.
  +                return! folder.Invoke (index, state, el)
  +                })
   
           //
           [<CompiledName("Iterate")>]
  
positive.code:             // Preconditions
              checkNonNull "array" array
  
              raise <| System.NotImplementedException "ExtCore.Control.Collections.Async.Array.iteri"
  
          //
          [<CompiledName("Reduce")>]
  
negative.code:         /// A specialization of Array.map which threads an accumulator through the computation and which also
          /// short-circuits the computation if the mapping function returns an error when any element is applied to it.
          [<CompiledName("Map")>]
          let map (mapping : 'T -> 'State -> Choice<'U, 'Error> * 'State)
                  (array : 'T[]) (state : 'State) : Choice<'U[], 'Error> * 'State =
              // Preconditions
              checkNonNull "array" array
  
              let mapping = FSharpFunc<_,_,_>.Adapt mapping
              let len = Array.length array
              /// Holds the mapped results.
              let results = Array.zeroCreate len
  
  