Edit in JSFiddle

require(['dojo/request/registry', 'dojo/Deferred', 'dojo/on', 'dojo/dom-attr', 'dojo/domReady!'], function(request, Deferred, on, domAttr){
    request.register('/user/1', function(url, options){
        var def = new Deferred();
        setTimeout(function(){
            def.resolve({first:"Kevin", last:"Armstrong"});
        }, 2000);
        return def;
    });
    
    on(dojo.byId('btn'), 'click', function(){
        dojo.byId('output').innerHTML = 'waiting...';
        domAttr.set(dojo.byId('btn'), 'disabled', 'disabled');
        var promise = request('/user/1');
        promise.then(function(data){
            dojo.byId('output').innerHTML = '<div>Name is '+data.first+' '+data.last+'</div>';
            domAttr.remove(dojo.byId('btn'), 'disabled');
        });
    });
});
<button id="btn">Fetch</button>
<div id="output"></div>
body { margin: 5px; }
#output {
    padding: 10px;
}