call middleware in async sequence