anchor.diff:        | null | ""  -> fail "Username should not be empty"
         | x when x.Length > 12 -> fail "Username should not be more than 12 characters"
         | x -> x.Trim().ToLowerInvariant() |> Username |> ok
  +    static member ToAsyncResult username =
  +      Username.TryCreate username
  +      |> mapFailure (System.Exception)
  +      |> async.Return
  +      |> AR
       member this.Value = 
         let (Username username) = this
         username
  
positive.code:     CreateUser -> SendSignupEmail -> UserSignupRequest 
        -> AsyncResult<UserId, UserSignupError>
   
    type VerifyUser = string -> AsyncResult<string option, System.Exception>
  
    let mapFailure f aResult = 
      let mapFirstItem xs = 
        List.head xs |> f |> List.singleton 
      mapFailure mapFirstItem aResult
  
    let mapAsyncFailure f aResult =
      aResult
  
negative.code:   open Chessie.ErrorHandling
    open BCrypt.Net
    open System.Security.Cryptography
  
    let mapFailure f aResult = 
      let mapFirstItem xs = 
        List.head xs |> f |> List.singleton 
      mapFailure mapFirstItem aResult
  
    type Username = private Username of string with
      static member TryCreate (username : string) =
  