anchor.diff:        sendEmail sendEmailReq
         |> mapAsyncFailure SendEmailError
   
  -    return res.UserId
  +    return userId
  +  }
  +
  +module Persistence =
  +  open Domain
  +  open Chessie.ErrorHandling
  +
  +  let createUser createUserReq = asyncTrial {
  +    printfn "%A created" createUserReq 
  +    return UserId 1
  +  }
  +    
  +module Email =
  +  open Domain
  +  open Chessie.ErrorHandling
  +
  +  let sendSignupEmail signupEmailReq = asyncTrial {
  +    printfn "Email %A sent" signupEmailReq
  +    return ()
     }
   
   module Suave =
  
positive.code:   let mapAsyncFailure f =
      Async.ofAsyncResult >> Async.map (mapFailure f) >> AR
  
    let createUser (createUser : CreateUser) 
                   (sendEmail : SendSignupEmail) 
                   (req : UserSignupRequest) = asyncTrial {
  
      let verificationCode = VerificationCode ""
  
      let createUserReq = {
        PasswordHash = PasswordHash.Create req.Password
  
negative.code:       Email = req.EmailAddress
        VerificationCode = verificationCode
      }
      let! userId = 
        createUser createUserReq
        |> mapAsyncFailure CreateUserError 
  
  