Create a stub backend using the given response monad (which determines how requests are wrapped), any stream type and any websocket handler.
Create a stub of an asynchronous backend (which wraps results in Scala's built-in Future), without streaming or websocket support.
Create a stub of a synchronous backend (which doesn't wrap results in any container), without streaming or websocket support.
Create a stub backend which delegates send requests to the given fallback backend, if the request doesn't match any of the specified predicates.