Improved the API.
Reverted some of the API changes.
Introduced test.
Use syncFuture.
Follow Shelf adapter good practices, e.g. use [syncFuture] and [catchTopLevelErrors].