Intercepting HTTP requests and responses by building our own middleware