function should return same deferred object