{"ScriptPreparationCode":null,"TestCases":[{"Name":"my promise","Code":"let customPromise = function(promise) {\r\n let tempPromise = promise instanceof Promise ? promise : new Promise(promise);\r\n\r\n let next = (result, callback) =\u003E {\r\n callback(result);\r\n\r\n return result;\r\n };\r\n\r\n return {\r\n done: (callback) =\u003E {\r\n return customPromise(tempPromise.then((result) =\u003E next(result, callback)));\r\n },\r\n fail: (callback) =\u003E {\r\n return customPromise(tempPromise.catch((result) =\u003E next(result, callback)));\r\n },\r\n always: (callback) =\u003E {\r\n return customPromise(tempPromise.then((result) =\u003E next(result, callback), (result) =\u003E next(result, callback)));\r\n }\r\n };\r\n};\r\n\r\nlet parseRes = function(response) {\r\n let res = {};\r\n\t\t\t\r\n res.text = response.responseText;\r\n res.status = response.status;\r\n\r\n try {\r\n res.json = JSON.parse(response.responseText);\r\n } catch (error) {\r\n res.json = null;\r\n }\r\n\r\n return res;\r\n};\r\n\r\nlet myajax = function(type, url, data) {\r\n let utype = type.toUpperCase();\r\n\r\n if([\u0027GET\u0027, \u0027POST\u0027, \u0027DELETE\u0027].indexOf(utype) === -1) {\r\n throw new Error(\u0027Invalid request!\u0027);\r\n }\r\n\r\n return customPromise((resolve, reject) =\u003E {\r\n let request = new XMLHttpRequest();\r\n\r\n \trequest.onloadend = () =\u003E {\r\n let response = parseRes(request);\r\n\r\n if(response.status === 200) {\r\n resolve(response.json || response.text);\r\n }\r\n else {\r\n reject(response);\r\n }\r\n };\r\n\r\n request.open(utype, fullUrl);\r\n request.setRequestHeader(\u0022X-REQUESTED-WITH\u0022, \u0027XMLHttpRequest\u0027);\r\n request.send(data);\r\n });\r\n};\r\n\r\nmyajax(\u0022POST\u0022, \u0022http://vanilla-js.com/path/to/api\u0022, \u0022banana=yellow\u0022)\r\n.done((res) =\u003E {\r\n\tconsole.log(\u0027Success!\u0027);\r\n})\r\n.fail((res) =\u003E {\r\n\tconsole.log(\u0027Failure!\u0027);\r\n})\r\n.always((res) =\u003E {\r\n\tconsole.log(\u0027Always!\u0027);\r\n});","IsDeferred":false},{"Name":"Jquery promise","Code":"$.ajax({\r\n type: \u0027POST\u0027,\r\n url: \u0022http://vanilla-js.com/path/to/api\u0022,\r\n data: \u0022banana=yellow\u0022\r\n})\r\n.done((res) =\u003E {\r\n\tconsole.log(\u0027Success!\u0027);\r\n})\r\n.fail((res) =\u003E {\r\n\tconsole.log(\u0027Failure!\u0027);\r\n})\r\n.always((res) =\u003E {\r\n\tconsole.log(\u0027Always!\u0027);\r\n});;\r\n","IsDeferred":false}]}