Middleware are a special type of high level function that that augment the behavior of transferring a command and delegate to a "next" handler. Middleware functions accept an ``Aws\CommandInterface`` and a ``Psr\Http\Message\RequestInterface`` and return a promise that is fulfilled with an ``Aws\ResultInterface`` or rejected with an ``Aws\Exception\AwsException`` reason.