

* Immutable
function myPromise() {
var deferred = $q.defer();
doSomethingAsync( function( result ) {
deferred.resolve( result );
} );
return deferred.promise;
}
deferred.promise
var p = myPromise();
p.then( success, error, notify )
p.catch( error )
p.finally ( callback )