public async Task <IActionResult> CreateUser([FromBody] CreateUserCommand command) { var outcome = from firebaseId in _createFirebaseUser(command.Email, command.Password) from evt in command.ToEvent(Guid.NewGuid(), firebaseId).AsTask() from _ in _saveAndPublishEventAsync(evt) select evt; return(await outcome.Map(val => val.Match <IActionResult>( Succ: evt => Created($"users/{evt.EntityId}", null), Fail: errors => BadRequest(new { Errors = errors.Join() })))); }