return Bluebird
                // If onCreating returns a Bluebird promise then there is no significant performance overhead here
                .resolve(this.model.hooks.onCreating && this.model.hooks.onCreating(document))
                .then(() => {
                    document = this.model.helpers.convertToDB(document, { document: true, properties: true });