Fixes a few issues with how we initialize the middleare. - Always completes the intitialization task - Avoids capturing the ExecutionContext - Allows initialization to occur repeatedly when it fails