| // passthrough request and modify response from server |
| // pass object as second arg of properties in response to override |
| export default function (req, props = {}) { |
| return new Promise((resolve) => { |
| const xhr = req.passthrough(); |
| xhr.onreadystatechange = () => { |
| if (xhr.readyState === 4) { |
| if (xhr.status < 300) { |
| // XMLHttpRequest response prop only has a getter -- redefine as writable and set value |
| Object.defineProperty(xhr, 'response', { |
| writable: true, |
| value: JSON.stringify({ |
| ...JSON.parse(xhr.responseText), |
| ...props, |
| }), |
| }); |
| } |
| resolve(); |
| } |
| }; |
| }); |
| } |