with ddefer promise