When Fetch API became standard I was thrilled. I will no longer need to use http utility libraries in order to make http calls in my apps. XMLHttpRequest was so low level and awkward (up to its inconsistent camel casing of acronyms!). You didn’t really have a choice but to wrap it with something more comfortable or choose one of tons of open source alternatives like jQuery’s $.ajax(), Angular’s $http, superagent and my personal favorite, axios. But are we truly free of http toolkits?
Don’t worry, this isn’t YAMT (Yet Another Monad Tutorial ). This is a practical post about a code smell that afflicts everyday code, and about an idiom that eliminates that smell. It just so happens that this idiom corresponds to one of the uses for monads in Haskell, but that’s just theory behind the practice, and I’ve saved the theory for the end.