anchor.diff:  
     type SignupEmailRequest = {
       Username : Username
  +    EmailAddress : EmailAddress
       VerificationCode : VerificationCode
     }
     type SendEmailError = SendEmailError of System.Exception
  +  
     type SendSignupEmail = SignupEmailRequest -> AsyncResult<unit, SendEmailError>
   
     type UserSignupError =
     | CreateUserError of CreateUserError
     | SendEmailError of SendEmailError
   
  -  let mapFailure f = 
  -    List.head >> f >> List.singleton |> mapFailure
  +  type SignupUser = 
  +    CreateUser -> SendSignupEmail -> UserSignupRequest 
  +      -> AsyncResult<UserId, UserSignupError>
  +
  +  let mapFailure f aResult = 
  +    let mapFirstItem xs = 
  +      List.head xs |> f |> List.singleton 
  +    mapFailure mapFirstItem aResult
   
     let mapAsyncFailure f aResult =
       aResult
  
positive.code:   type EmailAddress = private EmailAddress of string with
      member this.Value =
        let (EmailAddress emailAddress) = this
        emailAddress
      static member TryCreate (emailAddress : string) =
       try 
         new System.Net.Mail.MailAddress(emailAddress) |> ignore
  
negative.code:       Email = req.EmailAddress
        VerificationCode = VerificationCode.Create()
      }
  
      let! userId = 
        createUser createUserReq
        |> mapAsyncFailure CreateUserError
  
      let sendEmailReq = {
        Username = req.Username
        VerificationCode = createUserReq.VerificationCode
        EmailAddress = createUserReq.Email
      }
      do! sendEmail sendEmailReq 
          |> mapAsyncFailure SendEmailError
  
      return userId
    }
  