anchor.diff:              unbox<Func<obj,unit>> None
           )
   
  -    let fail (a : obj -> 'T) (pr : Promise<'T>) : Promise<'T> =
  -        pr.catch (unbox<Func<obj, U2<'T, PromiseLike<'T>>>> (fun reason -> a reason |> ignore; Promise.reject None))
  +    let catch (a : obj -> Promise<'R>) (pr : Promise<'T>) : Promise<'R> =
  +        pr.``then``(   
  +            unbox<Func<'T, U2<'R, PromiseLike<'R>>>> None,
  +            unbox<Func<obj,U2<'R, PromiseLike<'R>>>> a
  +        )
   
  -    let either a  (b: Func<obj, U2<'R, JS.PromiseLike<'R>>>) (pr : Promise<'T>) : Promise<'R> =
  +    let either a  (b: Func<obj, U2<'R, PromiseLike<'R>>>) (pr : Promise<'T>) : Promise<'R> =
           pr.``then``(a, b)
   
       let lift<'T> (a : 'T) : Promise<'T> =
  
positive.code:     let reject<'T> reason : Promise<'T> =
          Promise.reject<'T> reason
  
      let create resolver = Promise.Create resolver
  
      type PromiseBuilder() =
          member inline x.Bind(m,f) = bind f m
  
negative.code:     open Fable.Core
      open Fable.Import
      open Fable.Import.JS
      
      let create resolver = Promise.Create resolver
  
      let map (a : 'T -> 'R) (pr : Promise<'T>) : Promise<'R> =
          pr.``then``(   
              unbox<Func<'T, U2<'R, PromiseLike<'R>>>> a,
              unbox<Func<obj,unit>> None
  