call done() or pass deferred.reject directly to fail