return <Bluebird<TResult>>Bluebird
                // If onRetrieved returns a Bluebird promise then there is no significant performance overhead here
                .resolve(this.model.hooks.onRetrieved && this.model.hooks.onRetrieved(target))
                .then(() => {
                    // Cache the document if caching is enabled