Firebase v3 createUserWithEmailAndPassword .then Promise

Check this, you need to read payload or snapshot(firebase term)

firebase.auth().createUserWithEmailAndPassword(credentials.email, credentials.password)
                .then((authData) => {
                    console.log("User created successfully with payload-", authData);
                    //Write code to use authData to add to Users
                }).catch((_error) => {
                    console.log("Login Failed!", _error);
                })

Here's what I did and it worked.

        function registerUsername(email,password,displayName){
            firebase.auth().createUserWithEmailAndPassword(email, password).then(function(value) {
                console.log(value);
                }).catch(function(error) {
                    console.log(error);
                });
        }

Here is the correct use of then() and error handling with createUserWithEmailAndPassword:

firebase.auth().createUserWithEmailAndPassword(email, password).then(function(user) {
    var user = firebase.auth().currentUser;
    logUser(user); // Optional
}, function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
});

function logUser(user) {
    var ref = firebase.database().ref("users");
    var obj = {
        "user": user,
        ...
    };
    ref.push(obj); // or however you wish to update the node
}

I have another example here.